加强赛第五轮G题(G - 单词数 HDU - 2072 )
Posted 雪晨
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了加强赛第五轮G题(G - 单词数 HDU - 2072 )相关的知识,希望对你有一定的参考价值。
感谢我的学长们对我的带领;该题思想与代码来源于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;
}
以上是关于加强赛第五轮G题(G - 单词数 HDU - 2072 )的主要内容,如果未能解决你的问题,请参考以下文章
HDU 5321 Beautiful Set 容斥 (看题解)