HDU2072 单词数

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 79794    Accepted Submission(s): 20257

Problem Description

lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。

Input

有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。

Output

每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。

Sample Input

you are my friend #

Sample Output

4

 

代码如下:

解法一(AC):

#include <cstdio>
#include <iostream>
#include <cstring>
#include <string>
#include <set>
using namespace std;
int main(){
    char chr[1024];
    char stop[]="#";
    char prim[]=" ";
    char *p;
    set<string> words;
    while(gets(chr)!=NULL){
        if(strcmp(chr,stop)==0) break;
        words.clear();
        p=strtok(chr,prim);
        while(p){
            words.insert(p);
            p=strtok(NULL,prim);
        }
        cout<<words.size()<<endl;
    }
    return 0;
}
解法二(AC):
#include <cstdio>
#include <cstring>
#include <string>
#include <iostream>
#include <sstream>
#include <set>
using namespace std;
int main(){
    string str;
    set<string> words;
    while(getline(cin,str)&&(str!="#")){
        words.clear();
       istringstream sin(str);
       string s;
       while(sin>>s)
             words.insert(s);
       cout<<words.size()<<endl; 
    }
    return 0;
}
 
posted @ 2019-08-18 19:38  yyer  阅读(152)  评论(0编辑  收藏  举报