单词数
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 */