【C++题目】重点单词

文章描述了一个编程问题,给定一系列可能出现错误重复字母的英语单词,要求找出压缩后(删除连续重复字母)出现次数最多的单词。输入是单词列表,输出是该单词。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述

回家后,小 X 望着自己打瞌睡时写的英语笔记陷入了迷茫。由于太困了,他会时不时地把一个字母多写几次:比如可能把“she”写成“shhe”,也可能写成“ssshee”。 
但他依稀记得这堂课只讲了一个重点单词。为了找到这个单词,他想先把每个单词中连续重复的字母压缩起来:把“coool”压缩为“col”,把“aabbaa”压缩为“aba”。接下来找到压缩后出现次数最多的单词,这样就能找到重点单词了。 
由于工作量太大,小 X 希望你帮助他找到重点单词。他向你保证压缩后的单词出现次数最多的一定唯一。 

输入

第一行一个整数 n 表示笔记上共写了 n 个单词。 
接下来 n 行,每行一个字符串,表示一个单词。

输出

输出数据只有一行,包含一个字符串,表示压缩后出现次数最多的单词。 

样例输入 Copy
3 
qaaqqq 
qwwwwq 
qqqqaq
样例输出 Copy
qaq
提示

样例解释 
“qaaqqq”压缩成“qaq” 
“qwwwwq”压缩成“qwq” 
“qqqqaq”压缩成“qaq” “qaq”出现了两次,“qwq”出现了一次所以“qaq”出现次数最多 
数据范围 
本题共有 10 个测试点,每个测试点 10 分 
对于全部数据:单词长度<=50 
对于测试点 1   :n=1,单词长度为 1 
对于测试点 2-3 :n<=10000,单词长度为 1 
对于测试点 4-6 :n=1 
对于测试点 7-8 :n<=10 
对于测试点 9-10:n<=10000 

#include <bits/stdc++.h>
using namespace std;
map<string, int> cnt;
int main()
{
    int n;
    cin >> n;
    getchar();
    vector<string> s;
    int mx = -1;
    string ans = "";
    while (n--)
    {
        string word;
        cin >> word;
        string temp = "";
        temp += word[0];
        int L = word.size();
        int i;
        for (i = 1; i < L; i++)
        {
            if (word[i] != word[i - 1])
            {
                temp += word[i];
            }
        }
        cnt[temp]++;
        if (cnt[temp] > mx)
        {
            mx = cnt[temp];
            ans = temp;
        }
    }
    cout << ans << '\n';
    return 0;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值