加强赛第五轮G题(G

感谢我的学长们对我的带领;该题思想与代码来源于WArobot;

题目概述:

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

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

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

Sample Input

you are my friend
#

Sample Output

4


思想:该题采用getline输入,并且判断是否为“#”,“#”不被允许进入计数;
该题采用set来存getline输入的每一个数,用if(c[i]==' '||i==c.size())来分隔每一个单词;
由于题中没有说是否会出现连续的空格,所以用if(tmp=="") continue;和tmp="";来防止入坑;
set对象的建立方法:set<string> st;
set的插入元素的方法:st.insert(tmp);
循环导入结束后输出:st.size()(size是导出元素个数的函数)即可;
代码如下:

#include "bits/stdc++.h"
using namespace std;

set<string> st;
string c;
void word(){
st.clear();
string tmp="";
for(int i=0;i<=c.size();i++){
if(c[i]==' '||i==c.size()){
if(tmp=="") continue;
st.insert(tmp);
tmp="";
}
else tmp+=c[i];
}
cout<<st.size()<<endl;
}
int main(){
while(getline(cin,c)&&c[0]!='#'){
word();
}
return 0;
}

原文地址:https://www.cnblogs.com/sunowsir/p/6618005.html