uvaoj 1081510815

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=835&page=show_problem&problem=1756

输入一个文本,找出所有不同的单词,按字典序从小到大输出,单词不区分大小写。

使用string和set,输入时把所有非字母的字符改成空格,然后利用stringstream得到各个单词并存到set里面(set容器自动去重排序)

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 set<string>dict;
 4 int main()
 5 {
 6     string buf,s;
 7     while(cin>>s)
 8     {
 9         for(int i=0; i<s.length(); i++)
10         {
11             if((s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z'))
12             {
13                 s[i]=tolower(s[i]);
14             }
15             else
16             {
17                 s[i]=' ';
18             }
19 
20         }
21         stringstream ss(s);
22         while(ss>>buf)dict.insert(buf);
23     }
24     for(set<string>::iterator it=dict.begin(); it!=dict.end(); it++)
25     {
26         cout<<*it<<"
";
27     }
28     return 0;
29 }
View Code
原文地址:https://www.cnblogs.com/fqfzs/p/9965104.html