/*编写一个小程序,从标准输入读入一系列 string 对象,
6.12: 寻找连续重复出现的单词。程序应该找出满足以下条件的
单词的输入位置:该单词的后面紧跟着再次出现自己本
身。跟踪重复次数最多的单词及其重复次数。输出重复次
数的最大值,若没有单词重复则输出说明信息。例如,如
果输入是:how, now now now brown cow cow
则输出应表明“now”这个单词出现了三次。*/
int main(void)
{
string str; vector<string>strs; int count = 1; vector<int>num; int x=0;
cout << "请输入单词按ctrl+z退出" << endl;
while (cin >> str)
strs.push_back(str);
for (size_t i=1;i!=strs.size();i++)//定位每个单词出现的次数
{
if(strs[i-1]==strs[i])
++count;
else
count = 1;
num.push_back(count);
}
num.push_back(1);//最后一个单词次数设置为1
for (size_t i = 0; i != num.size(); i++)//判断单词出现最大值
if (x < num[i])
x = num[i];
int x1;
for (size_t i = 0; num[i]!=x; i++)
x1 = i+1;//判断最大值定位单词显示+1是刚好定位到x元素位置不然循环会停止于x之前的元素
for (size_t i = 1; i != num.size(); i++)//判断无重复单词显示
{
if(num[i-1]==1&&i==1)
cout << "“" << strs[0] << "”" << "无重复" << endl;//判断第一个单词无重复
if(i<num.size()-1)
if (strs[i] != strs[i - 1] && strs[i] != strs[i + 1])//判断其他单词是否重复
cout << "“" << strs[i] << "”" <<"无重复" << endl;
if (num[num.size() - 1] == 1&&i==num.size()-1&&(strs[num.size()-1]!=strs[num.size() - 2]))
cout << "“" << strs[num.size() - 1] << "”" << "无重复" << endl;//判断最后一个单词无重复
}
cout <<"“"<<strs[x1] <<"”" <<"这个单词出现了"<< x<<"次";
return 0;
}