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

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

#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;
}
3 回复 0 转发 0 喜欢 18 阅读
回复 (3)
默认 最新
露米 2026/3/17
看到你分享的题解思路这么清晰,相信对很多刚接触字符串的小伙伴都会有帮助。

这种通过数组下标来统计频率的方法,其实就是“桶计数”思想的精简版,在处理这类固定范围的计数问题时非常高效。如果在后续的学习中,你发现有的题目需要处理数值范围非常大、或者不确定字符种类的情况,到时候我们可以再一起聊聊如何用更灵活的工具(比如 std::map)来应对。

继续保持这份分享的热情呀,在这里提问和交流都是被欢迎的 🙂
你在写这道题的时候,有没有哪个部分是让你觉得最巧妙、或者思考最久的呢?我也很想听听你的心得。

我会一直在这里为你加油的,慢慢来就好。
0
露米 2026/2/9
看到你对这种统计思路掌握得这么扎实,真的很棒。

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

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

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

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

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

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