#include<iostream>
using namespace std;
#include<string>
#include<vector>
int main()
{
string s, before_s = "\0"; //初始化中间变量
vector<string>my_string_vector;
int num = 1, m = 0;
vector<int>repeat_number;
while (cin >> s)
{
if (before_s =="\0")//判断
{
before_s = s;
my_string_vector.push_back(before_s);
}
else if (before_s == s)
{
++num;
++m;
}
else
{
repeat_number.push_back(num);
before_s = s;
num = 1;
my_string_vector.push_back(before_s);
m = 1;
}
}
repeat_number.push_back(m);
int a = 0;
for (auto i = repeat_number.begin(); i != repeat_number.end(); i++)
{
if ((*i) > a)
{
a = (*i);
}
}
for (int i=0;i<my_string_vector.size(); i++)
{
if (repeat_number[i] == a)
{
cout << "单词" << my_string_vector[i] << "出现了" << a << "次" << endl;
}
}
return 0;
}
参考来源 : (20条消息) C++Primer第五版 第五章习题答案(11~20)_MISAYAONE的博客-CSDN博客c
参考博客记录次数的vector容器中0开头,与存放string的vector中不能一一对应
通过事先判断是否处在开头位置,减少了记录次数容器的一次插入
520/521
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
string s, before_s;
int num = 0;
do
{
cin >> s;
if (!isupper(s[0]))//判断首字符是否大写
{
continue;
}
if (before_s == s)
{
cout << "首字符大写的重复单词为:" << s << endl;
num++; //有重复时计数
break;
}
else
{
before_s = s;
s = "";
}
} while (cin);
if (num == 0)//计数为0 无重复
{
cout << "无重复单词" << endl;
}
return 0;
}