菜6: 统计单词数目

mac2025-12-26  7

lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。 有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。 每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。 Sample Input you are my friend # Sample Output 4

这个题目有一点点坑。刚开始我是直接按照空格的数目来算单词的数目,就直接判错了。考虑不太周到。有可能有以下的情况:(用-代表空格)

“------abc-ef” (即有先导空格)“abc--------ef” (两个单词间差了好几个空格)“abc-ef------”(结尾有好多空格)

如果直接考虑的话会比较麻烦,于是借鉴了其他人的代码。深有收获。 依靠cin在获取输入时不会接受空格,从而方便的解决问题。

#include <iostream> #include <stdio.h> #include <string.h> #include <set> #include <sstream> using namespace std; int main() { string str1,str2; while(getline(cin,str1)) { if(str1 == "#") break; istringstream stream(str1); set<string>Set;//定义一个集合 while(stream>>str2) { Set.insert(str2); } cout<<Set.size()<<endl; } return 0; } 看来stream流和string都得学会啊。 先吸取一行,再读每一行的单词。而只用C的话,虽然可以直接用fgets()拿到一行的数据,但接下来读取单个单词时不太方便实现。所以还是用stream流方便许多。
最新回复(0)