23-单词数(HDU2070)

        单词数

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
linle   |   We have carefully selected several similar problems for you:  2074 2054 2052 1251 2024 
#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
*/

  

上一篇:20、redis和memcached比较?


下一篇:MyEclipse创建WebService服务端和客户端