计算一篇文章的单词数量-巧用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;

    }
posted @ 2016-03-16 22:33  早上好王木木  阅读(364)  评论(0)    收藏  举报