单词数
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 59068 Accepted Submission(s): 14674
Problem Description
lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。
Input
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。
Output
每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
Sample Input
you are my friend
#
Sample Output
4
Author
Lily
Source
浙江工业大学网络选拔赛
运用容器set会让程序变得很简单。前段时间吉首大学的比赛有一个类似的题目,但是我当时用的是string数组存储。也是对容器的掌控不好。没有很好的运用。所以以后做题一定要多用容器提高熟练度。至于思路。很简单的题目就不多说了。
#include<bits/stdc++.h>
#define max(a,b) a>b?a:b
#define min(a,b) a<b?a:b
using namespace std ;
typedef long long ll;
typedef unsigned long long ull;
int main(){
set<string> st;
string s = "";
char c;
while(c = cin.get()){ // cin >> c;
if(c=='#') break;
if(c=='\n'){
if (s.length()) st.insert(s);
s = "";
cout<<st.size()<<endl;
st.clear();
continue;
}
if(c==' '){
if(!s.length()) continue;
st.insert(s);
s = "";
}
else s+=c;
}
return 0;
}
不过在有注释那一行有需要注意的地方。cin>>c 不能去替代cin.get()。因为cin读取不到空格和\n;这里需要注意一下。