Description
统计一篇文章里不同单词的总数。
Input
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。
Output
每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
Sample Input
you are my friend
#
Sample Output
4
第一次写的时候没看清题 (不同单词) 导致WA了一发··
思路理清楚后也不是什么难题,用二维数组来记录一行句子中的各个单词,每个单词后要加\0
最后每个单词都与它前面的各个单词对比,没有相同的话就count++啦
#include <iostream> #include <cstdio> #include <cstring> char word[2000][2000]; char s[1000000]; int main(int argc, char** argv) { while(gets(s),s[0]!=‘#‘) { int t=0,l=0; int len=strlen(s); int i=0; while(i<len) { if(s[i]==‘ ‘) { while(s[i]==‘ ‘) i++; } else { while(s[i]!=‘ ‘&&s[i]!=‘\0‘) word[t][l++]=s[i++]; //将单词存入二维组 word[t][l]=‘\0‘; //别忘记在单词末尾加上\0 t++; l=0; } } /*接下来进行筛选*/ int count=0; int flag=0; for(int j=0;j<t;j++) { flag=0; for(int k=0;k<j;k++) { if(strcmp(word[k],word[j])==0)//如果找出此单词与前面某个单词相同,则不计入单词数 flag=1; } if(flag==0) count++; } printf("%d\n",count); } return 0; }
时间: 2024-10-04 21:52:59