set自动排序去重 stringstream流分割字符
链接:https://vjudge.net/problem/UVA-10815#author=0
题意:给几段句子,按字典序筛选出单词。
题解:用C的话太麻烦,不如用自动去重并排序的set容器。有个地方需要考虑,就是单词连接着(:“)。这被看来是一个string。所以非字母的的要先变为空格。因为stringstream是以空格来分单词的。
ac代码:
#include<iostream>
#include<set>
#include<string>
#include<sstream>
using namespace std;
int main()
{
string s,s1;
set<string>sz;
while(getline(cin,s))
{
for(int i=0;s[i]!=0;i++)
{
if(!isalpha(s[i])) s[i]=' ';
if(s[i]>='A'&&s[i]<='Z') s[i]+='a'-'A';
}
stringstream ss;
ss.clear();
ss.str(s);
while(ss>>s1)
{
sz.insert(s1);
}
}
for(set<string>::iterator it=sz.begin();it!=sz.end();it++)
cout<<*it<<endl;
}
别趴下,熬过黑夜就是黎明
浙公网安备 33010602011771号