首页 > 代码库 > HDU - 2072

HDU - 2072

题目:

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

 

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

 

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

 

Sample Input
you are my friend #
 

 

Sample Output
4
 
 
利用STL的set,但是需要注意字符串的处理,利用set的特性,建立一个中间字符串变量tmp,把当前单词暂时存在tmp中,根据判断条件(输入的字符串是否为空格或者到了末尾)来判断把tmp存入set中。
另一个需要注意的就是遍历的for需要从0到字符串最后的后面一个,为了防止什么都没有的情况。
代码:
#include<bits/stdc++.h>
using namespace std;

set<string> se;

void word(string str){
    se.clear();
    string tmp="";
    for(int i=0;i<=str.size();i++){
        if(str[i]==‘ ‘||i==str.size()){
            if(tmp=="")  continue;
            se.insert(tmp);
            tmp="";
        }
        else  tmp+=str[i];
    }
    cout<<se.size()<<endl;
}

int main(){
    string str;
    while(getline(cin,str)&&str[0]!=‘#‘)
        word(str);
    return 0;
}
该代码来源于杭电讨论区的朋友( 喜欢你的笑声)。

HDU - 2072