单词数
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 61557 Accepted Submission(s): 15270
Problem Description
lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。
Input
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。
Output
每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
Sample Input
you are my friend
#
#
Sample Output
4
Author
Lily
Source
Recommend
#include <bits/stdc++.h>
using namespace std;
set <string> myset; int main(){
string str;
while(getline(cin, str)){
myset.clear();
if(str[0] == '#')
break;
int len = str.length();
for(int i = 0; i < len; i++){
string ss = "####################################################################################";
int t = 0;
while(str[i] != ' ' && i < len){
ss[t++] = str[i++];
}
if(t) //ss里面存了数据时才将ss插入到set
myset.insert(ss);
}
cout << myset.size() << endl;
}
return 0;
} #include <iostream>
#include <sstream>
#include <set>
using namespace std; int main(){
set <string> myset;
string str, t;
while(getline(cin, str) && str[0] != '#'){
// stringstream ss(str);
stringstream ss;
ss.str(str);
while(ss >> t){
myset.insert(t);
}
cout << myset.size() << endl;
myset.clear();
}
return 0;
} /*
本题有两个注意点:就是只有ss里面存了新数据才插入到set;另一个则是对于string类型的重载的+是用于字符串间的,不能将
字符直接相加,字符是只能是单个赋值,不能用+,但是当赋值时则需要要先保证字符串自身的长度,即需要初始化足够的长度才
能赋值,否则会越界的!!!
/*
1." "
0
2." asdf as a"
3
3." asdf asdf ds"
2
4."asdf asdf "
1
5.直接输回车
0
*/