计算一篇文章的单词数量-巧用map
问题描述
Input
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。(保证每行不超过1000个字符)
Output
每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数
Sample Input
you are very kind
#
Sample Output
4
问题解决
- 注意,这里要求的不是单词总数,而要去掉重复单词。
- 新学习了一个map知识点,类似于iOS里面的dictionary,包含有key,value. 其中key,系统会自动过滤掉相同的key,不会录入。因此,可以考虑将新单词以key的方式储存在map中,大大提高了效率。
- 强调一下字符串是以'\0'结尾的。
- 代码:
#include<stdio.h>
#include<string.h>
#include<map>
#include<string>
using namespace std;
int CountWord(char txt[]){
int i=0;
char word[1000];
map<string ,int> my_map;
my_map.clear();
while(txt[i]!='\0'){
while(txt[i]==' ')
i++;
if(txt[i]=='\0'){
break;
}
int j=0;
do{
word[j++]=txt[i++];
}while(txt[i]!=' '&&txt[i]!='\0');
word[j]='\0';
my_map[word]=1;
}
return my_map.size();
}
int main(){
char txt[1000];
while(strcmp(gets(txt),"#\0")){
int count=0;
count=CountWord(txt);
printf("%d\n",count);
}
return 0;
}

浙公网安备 33010602011771号