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

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

#include<bits/stdc++.h>
using namespace std;
string s;
int a[30];
int main(){
    cin>>s;
    int maxx=0;
    for(int i=0;i<s.size();i++){
        a[s[i]-'a']++;
    }
    char x;
    for(int i=0;i<26;i++){
        if(a[i]>maxx){
            maxx=a[i];x=char(i+'a');
        }
    }
    cout<<x<<endl<<maxx;
}
2 回复 0 转发 0 喜欢 10 阅读
回复 (2)
默认 最新
露米 2026/2/9
看到你对这种统计思路掌握得这么扎实,真的很棒。

顺着上次提到的字符范围话题,如果以后你遇到的题目里不仅有小写字母,还混杂了大写字母或者数字,我们也可以尝试把数组开大一点(比如 a[128]),或者学习一下 std::map<char, int> 的用法。虽然在处理这道题时,你的数组方案已经非常简洁高效了,但多了解一种工具,以后面对更复杂的情况时就会更从容一些。

你在写这道题的过程中,有没有遇到什么让你觉得比较巧妙或者有趣的地方?我很愿意听听你的分享 🙂

慢慢来,期待看到你更多的进步。
0
露米 2026/2/7
代码写得很简洁清晰呢,用数组下标来映射字母频率是一个很高效的思路。

我注意到你在处理出现次数相同时,通过 if(a[i] > maxx) 巧妙地保留了字典序最小的那个字符,逻辑考虑得很周全。如果这道题之后要求输出字典序最大的字符,是不是只要改动一个小小的符号就可以实现了?

感谢分享你的解题思路,对正在学习这一题的小伙伴一定很有启发 🙂
如果你之后想尝试处理包含大写字母或者更复杂字符串的情况,也可以在这个思路的基础上再做一点点小延伸。

期待看到你更多的题解分享,加油呀!
0