算法提高 不同单词个数统计
编写一个程序,输入一个句子,然后统计出这个句子当中不同的单词个数。例如:对于句子“one little two little three little boys”,总共有5个不同的单词:one, little, two, three, boys。
说明:(1)由于句子当中包含有空格,所以应该用gets函数来输入这个句子;(2)输入的句子当中只包含英文字符和空格,单词之间用一个空格隔开;(3)不用考虑单词的大小写,假设输入的都是小写字符;(4)句子长度不超过100个字符。
输入格式:
输入只有一行,即一个英文句子。
输出格式:
输出只有一行,是一个整数,表示句子中不同单词的个数。
输入样例:
在这里给出一组输入。例如:
one little two little three little boys
输出样例:
在这里给出相应的输出。例如:
5
方法:
用sstream字符流将字符串以空格分开,挨个插入vector数组中,每次插入循环一遍vector数组,确保不等于vector数组中的任意单词,最后输出vector数组的长度即是单词的个数。
代码:
#include<iostream>
#include<string>
#include<sstream>
#include<vector>
using namespace std;
int main()
{
string s,t;
getline(cin, s);
stringstream ss(s);
vector<string>arr;
int flag = 0,cnt=0;
while (ss >> t)
{
flag = 0;
for (int j = 0; j < arr.size(); j++)
{
if (arr[j] == t)//有相同的单词
{
flag = 1;
break;
}
}
if (flag == 0)//没有相同的单词
{
arr.push_back(t);
cnt++;
}
}
cout << cnt << endl;
return 0;
}