您的位置:首页 > 其它

单词数 (STL set集合)

2017-05-27 14:32 155 查看


单词数

Problem Description

lily的好朋友xiaoou333近期非常空。他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。以下你的任务是帮助xiaoou333解决问题。

Input

有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。

Output

每组仅仅输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。

Sample Input

you are my friend
#


Sample Output

4
set集合使用方法及特点:                1。set中的元素从小到大排列且和集合一样没有反复元素。         2,set<string>::iterator     s.begin()   s.end()
#include<iostream>
# include<cstring>
#include<cstdio>
# include<sstream>
# include<string>
#include<set>
using namespace std;
string wen,str;
set<string> dict;
int main()
{

while(getline(cin,wen)&&wen!="#")
{

stringstream  ch(wen);                      //在文本串中找单个单词
while(ch >>str)
dict.insert(str);
printf("%d\n",dict.size());
dict.clear();
}
return 0;
}




和用map差点儿相同:

#include<iostream>
# include<cstdio>
# include<string>
# include<map>
# include<cstring>
# include<sstream>
using namespace std;
map<string ,int> m;

string str,ch;

/* int main()
{
while(getline(cin,str)&&str!="#")
{
int len=str.size();
int i=0;
m.clear();
while(i<len)
{
ch="";
while(i<len&&'a'<=str[i]&&str[i]<='z')
ch+=str[i++];
if(ch!="")
{
m[ch]=1;
}
i++;
}
printf("%d\n",m.size());
}
return 0;
}*/
int main()
{
while(getline(cin,str)&&str!="#")
{
stringstream ss(str);
m.clear();
while(ss>>ch)
{
m[ch]=1;
}
printf("%d\n",m.size());
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: