<set>容器中的每一个元素的值都是唯一的,并且可以进行自动排序。<set>与<map>不同的是<set>可以储存同一数据类型,系统可以根据数据的值自动进行排序。
lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。
Input
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。
Output
每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
Sample Input
you are my friend
Sample Output
4
代码如下
(1)
#include<stdio.h>
#include<string.h>
char a[1001],b[100100],book[1001][1001];
int main()
{
while(gets(a)&&a[0]!='#')
{
memset(b,'\0',sizeof b);
memset(book,0,sizeof book);
int q=0,w=0,e=0;
int h=strlen(a);
a[h]=' ';
for(int i=0;i<=h;i++){
if(a[i]!=' ')
b[q++]=a[i];
if(a[i]==' '&&q>0)
{
b[q]='\0';
q=0;
for(int j=0;j<w;j++){
if(strcmp(book[j],b)==0)
e++;
}
if(e==0)
strcpy(book[w++],b);
e=0;
}
}
printf("%d\n",w);
}
}
(2)
#include<stdio.h>
#include<string.h>
#include<set>
#include<sstream>///
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
string x1,x2;
while(getline(cin,x1)&&x1[0]!='#')//getline(cin,)作用是用来读入一行数据
{
stringstream stream(x1);
set<string>q;
while(stream>>x2)///
q.insert(x2);
printf("%d\n",q.size());
}
}