输入一行由小写字母和空格组成的句子,计算相同单词的个数。
需要注意的几点:1) 如果一行句子只有空格,则有0个单词。
2) 如果一行句子由空格开头,不能算作单词个数。
3) 如果两个单词之间有n个空格隔开,不能算作单词个数。
4) 如果句子由n个空格结尾,不能算作单词个数。
5) 相同的单词的个数只是一个。
Problem Description
lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。
Input
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。
Output
每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
Sample Input
Sample Output
|
#include<stdio.h>
#include<string.h>
#include<set>
#include<iostream>
#include<string>
using namespace std;
int main()
{
char s[1000];
set<string>S;
while(gets(s)!=NULL&&s[0]!='#')
{
int j,k,count=0;
int m=strlen(s);
string b[100];
char *p;
p=strtok(s," ") ;
for( k=0;p!=NULL;k++)
{
b[k]=p;
//cout<<b[k]<<endl;
p=strtok(NULL," ") ;
}
for(int i=0;i<k;i++)
{
if(S.count(b[i])==0)
{
S.insert(b[i]);
}
}
int ans=S.size();
printf("%d\n",ans);
S.clear();
}
return 0;
}//AC代码