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;
}

该代码来源于杭电讨论区的朋友( 喜欢你的笑声)。

猜你喜欢

转载自blog.csdn.net/sunowsir/article/details/83115886