Problem Description
lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。
Input
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。
Output
每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
Sample Input
you are my friend
#
Sample Output
4
用的set集合,对这个还不是就很了解…
set是一个集合,因此集合中元素不允许有重复,若需要重复,需要用multiset
这里用还到stringstream,在sstream头文件中,用法详见:http://www.cppblog.com/Sandywin/archive/2007/07/13/27984.html,
例:int 与string转化:
int x=1000;
string result;
streamstring str;
str<<x;
str>>result;
result 就是1000;
stringstream流每次以空格作为读取结束标识符结尾
因为是多组数据,最后需要清空set集合,第一次没clear ,wa了两次
AC代码:
1 #include<iostream> 2 #include<string> 3 #include<sstream> 4 #include<set> 5 using namespace std; 6 7 set<string> s; 8 9 int main() 10 { 11 string str,ss; 12 while(getline(cin,str)&&str[0]!='#') 13 { 14 s.clear(); 15 stringstream stream(str); //赋值:stream >> result; 每次以空格作为读取结束标识 16 while(stream>>ss) 17 s.insert(ss); 18 cout<<s.size()<<endl; 19 } 20 return 0; 21 }