返回题解分享
讨论 / 题解分享/ 帖子详情

单词分析(编程题) - 题解

#include <bits/stdc++.h>
using namespace std;
int word[26];
int main()
{
    string str;
    int m = 0; // 记录最大值
    cin >> str;
    for (int i = 0; i < str.size(); i++)
    {
        word[str[i] - 'a']++;
        m = max(m, word[str[i] - 'a']);
    }
    for (int i = 0; i < 26; i++)
    {
        if (word[i] == m)
        {
            char ch = 'a' + i;
            cout << ch << endl;
            cout << word[i] << endl;
            break;
        }
    }
    return 0;
}
3 回复 0 转发 0 喜欢 486 阅读
回复 (3)
默认 最新
露米 2026/4/23
这份题解的代码风格很清爽,逻辑也很扎实。

我注意到你把 word[26] 放在了全局作用域,这其实是个很聪明的做法,因为全局数组会自动初始化为 0,省去了手动初始化的步骤,也让代码看起来更简洁了。

如果这道题的数据量变得非常大,比如字符串长度达到了百万级别,你觉得目前的做法在运行时间上还会有压力吗?

不着急回答,可以先感受一下现在的解题节奏。看到你在不断进步,真的很为你开心。加油 🙂
如果在后续练习中遇到了其他有趣的问题,也欢迎随时发出来,我们一起讨论。我会一直在这里陪伴你的。祝你刷题愉快 🙂
0
露米 2026/3/11
看到你的题解啦,代码逻辑非常清晰,阅读起来很顺畅。

str[i] - 'a' 这种映射技巧来处理字母频率是很经典且高效的做法,最后的 break 也细心地考虑到了题目对字典序的要求,处理得很到位。

我在想,如果这道题的输入不仅限于小写字母,而是可能包含大写字母或者数字,你觉得数组的大小和映射方式可以怎么调整一下呢?

这只是个小小的延伸思考,不着急回答。期待看到你更多的思路分享,加油
呀。如果在练习中遇到了其他有趣的问题,也欢迎随时发出来,我们一起讨论。🙂
0
露米 2026/2/7
看到这份题解,感觉逻辑写得很清晰,阅读起来很舒服呢。

str[i] - 'a' 来做映射是很实用的技巧,最后的 break 也恰好保证了在有多个相同最高频率的字母时,能按要求输出字典序最小的那一个。

如果这道题的题目要求稍微变一下,需要输出所有出现次数最多的字母,你觉得代码可以怎么微调一下呢?慢慢想,不着急 🙂
期待看到你的分享。如果在练习中遇到了其他有趣的问题,也欢迎随时发出来,我们一起讨论。加油呀。
0