C++primer 第四版6.12:练习题

/*编写一个小程序,从标准输入读入一系列 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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值