例题 5-3 安迪的第一个字典(Andy's First Dictionary) UVa 10815
2017-08-25 12:52
417 查看
题目大意:
输入一个文本,找出所有不同的单词(连续的字母序列),按照字典序从小到大输出,单词不区分大小写(算一个)
输出时 全部按照小写格式输出。
实现:
另一种方法:
while(cin >> s){
for(int i = 0; i < s.length(); i++ ){
if(isalpha(s[i]))
s[i] = tolower(s[i]);//直接改变单词本身大小写
else
s[i] = ' ';//遇到非字母换为空格
}
stringstream ss(s);
while(ss >> buf) a.insert(buf);
}
注意:
(1)第一种 利用 string buf直接相加的情况(不用空格代替非字母) 虽然大多数样例可以通过 但是 例如 I"love you
就会在同一行输出I love (事实上要求每个单词占一行) 所以这是错误的。
(2)这里利用了set的无重复元素的性质(题目就是要求不重复输出)。
输入一个文本,找出所有不同的单词(连续的字母序列),按照字典序从小到大输出,单词不区分大小写(算一个)
输出时 全部按照小写格式输出。
实现:
#include<iostream> #include<vector> #include<string> #include<set> #include<cstring> #include<sstream> using namespace std; string to_upper(string str)//字符串小写转换为大写(原字符串不改变) { string a; for(int i = 0; i < str.size(); i++){ if(str[i] != '\0'){ a += toupper(str[i]); } } return a; } struct Rule{//定义排序规则(此题可以不用,默认按照字典序) bool operator()(const string &a, const string &b){ return to_upper(a) < to_upper(b); } }; int main() { // freopen("C:\\Users\\zhangwei\\Desktop\\input.txt","r",stdin); string s; string buf; set<string,Rule> a; while(cin >> s){ buf.clear();//每次需要清空 for(int i = 0; i < s.length(); i++ ){ if(isalpha(s[i])) buf += tolower(s[i]); else buf += ' ';//(一定要有) 遇到非字母时候换成空格 } stringstream ss(buf); //读到 字符流中 while(ss >> buf) a.insert(buf);//从 字符流中读取单词(以空格或换行符区分) } set<string,Rule>::iterator it; for(it = a.begin(); it != a.end(); it++ ){ cout << *it<<endl; } return 0; }
另一种方法:
while(cin >> s){
for(int i = 0; i < s.length(); i++ ){
if(isalpha(s[i]))
s[i] = tolower(s[i]);//直接改变单词本身大小写
else
s[i] = ' ';//遇到非字母换为空格
}
stringstream ss(s);
while(ss >> buf) a.insert(buf);
}
注意:
(1)第一种 利用 string buf直接相加的情况(不用空格代替非字母) 虽然大多数样例可以通过 但是 例如 I"love you
就会在同一行输出I love (事实上要求每个单词占一行) 所以这是错误的。
(2)这里利用了set的无重复元素的性质(题目就是要求不重复输出)。
相关文章推荐
- 安迪的第一个字典(Andy's First Dictionary, UVa 10815)
- STL语法——集合:set 安迪的第一个字典(Andy's First Dictionary,UVa 10815)
- 《算法竞赛入门经典2ndEdition 》例题5-3 安迪的第一个字典(Andy's First Dictionary, Uva10815)
- 例题5-3 安迪的第一个字典 UVa10815
- 例题:安迪的第一个字典(UVa 10815)
- 算法竞赛入门经典第五章例题5-3 Andy's First Dictionary UVA - 10815
- UVA - 10815 Andy's First Dictionary
- 集合set练习:Andy's First Dictionary(UVa 10815)代码
- 紫书章5例三 Andy's First Dictionary, UVA 10815(set)
- UVa 10815 - Andy's First Dictionary【排序+去重】
- UVA - 10815 Andy's First Dictionary
- uva 10815 Andy's First Dictionary
- UVA - 10815 Andy's First Dictionary
- uva 10815 Andy's First Dictionary
- 紫书章5例三 Andy's First Dictionary, UVA 10815(set)
- UVA 10815 Andy's First Dictionary
- uva 10815 Andy's First Dictionary(字符串处理+sort排序)
- uva 10815 Andy's First Dictionary
- UVA 10815 — Andy's First Dictionary(强大的字符串流)
- UVa10815 Andy's First Dictionary