POJ 1951 - Extra Krunch
http://poj.org/problem?id=1951
概要
与えられた文を krunch した文を答える.
krunch された文は母音を含まず,また同じアルファベットが2回以上出現しない. 同じアルファベットを含む文を krunch した場合,2回目以降に現れるアルファベットは削除される. 記号は何度現れてもよい.
krunch された文は2つ以上空白が連続することはない. また,記号の前に空白があってはならない.
制約
- 文の長さは2文字以上70文字以下
解法
やるだけ.
poj/1951.cc1 #include <iostream> 2 #include <sstream> 3 #include <cctype> 4 #include <algorithm> 5 using namespace std; 6 7 int main() 8 { 9 string s; 10 getline(cin, s); 11 bool seen[26]; 12 fill_n(seen, 26, false); 13 stringstream ss; 14 for (string::const_iterator it = s.begin(); it != s.end(); ++it) { 15 switch (*it) { 16 case 'A': 17 case 'E': 18 case 'I': 19 case 'O': 20 case 'U': 21 break; 22 default: 23 if (isupper(*it)) { 24 if (!seen[*it-'A']) { 25 seen[*it-'A'] = true; 26 ss << *it; 27 } 28 } else { 29 ss << *it; 30 } 31 } 32 } 33 34 ostringstream oss; 35 ss >> s; 36 oss << s; 37 while (ss >> s) { 38 if (isupper(s[0])) { 39 oss << ' '; 40 } 41 oss << s; 42 } 43 cout << oss.str() << endl; 44 return 0; 45 }