题意:“五美”之一的Andy用英文写下了一大段话,现在你需要将每个单词拆分,并且全部改成小写按照字典序排列输出。规定Apple,apple,APPLE等转换小写后相同的单词只需要输出一遍。
分析:这道题可以算作 STL 的简单应用,考虑到要排除相同单词,那么首选 set ,对与字典序排列和小写字母,使用 isalpha() 和 tolower() (头文件是 #include < cctype > / #include < ctype.h >参考资料见最下面)。
代码如下:
#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
set<string> p;
int main(){
std::ios::sync_with_stdio(false);
std::cin.tie(0);
string s;
while(getline(cin,s)){
for(int i=0;i<s.size();i++){
if(!isalpha(s[i]))
continue;
string tmp;
while(i<s.size() && isalpha(s[i])){
tmp+=tolower(s[i++]);
}
p.insert(tmp);
}
}
for(set<string>::iterator iter=p.begin();iter!=p.end();iter++){
cout<< *iter <<endl;
}
return 0;
}
JNU ACM ICPC
WYC
参考资料: