加强赛第五轮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多校赛第十场 Videos

hdu5320

HDU 5321 Beautiful Set 容斥 (看题解)

HDU 1251 Trie树模板题

HDU 5863 cjj's string game ( 16年多校10 G 题矩阵快速幂优化线性递推DP )

UPC-2021个人训练赛第20场-部分题解