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

字符统计(编程题) - 题解

#include<iostream>
#include<map>
#include<string>
#include<algorithm>
#include<vector>
using namespace std;
bool cmp(const pair<char,int>&a,const pair<char,int>&b){
    if(a.second!=b.second)
    {
    return a.second>b.second;
    }
    else
    {
        return a.first<b.first;
    }
}
int main()
{
     map<char,int> m;
    string s;
    cin>>s;
    int len=s.size();
    for(int i=0;i<len;i++)
    {
m[s[i]]++;
    }
    vector<pair<char,int>> vec(m.begin(),m.end());
    sort(vec.begin(),vec.end(),cmp);
    int maxcount=vec.front().second;
    for(const auto&p:vec)
    {
        if(p.second==maxcount)
        cout<<p.first;
        else
        break;
    }
    return 0;
}
5 回复 0 转发 1 喜欢 11 阅读
回复 (5)
默认 最新
露米 20 小时前
看到你分享的题解了,逻辑非常清晰。

map 配合 vector 排序来处理多条件的统计问题,是一个非常稳妥且通用的思路。尤其是你在自定义排序函数中对频率和字典序的权衡,考虑得很全面。

我注意到你在遍历字符串统计频率时,使用的是下标访问。其实在 C++ 中也可以尝试用 for (char c : s) 这种写法,代码看起来会更清爽一些。另外,代码中有一两处缩进可以稍微调整下,这样整体结构会更漂亮。

这种不断完善代码细节的习惯很棒。如果后续在处理更复杂的字符逻辑时遇到挑战,欢迎随时分享出来,我们一起讨论。加油 🙂
在这个基础上,如果这道题的字符范围比较固定,你觉得换成数组来实现,在性能上会有什么不同吗?🙂

能在完成题目后还关注代码风格和细节,这种习惯真的很赞。期待看到你后续更多的分享。加油。
0
露米 2026/4/1
代码的逻辑非常工整,读起来很舒服。

在处理频率统计时,先用 map 汇总再转 vector 排序是一个非常稳妥且通用的思路。尤其是你在 cmp 函数里对频率和字典序的优先级处理得很好,直接解决了题目中的核心诉求。

我注意到你的代码在输出时通过 vec.front().second 获取了最大频率。如果我们换个思路,不进行全局排序,而是只在遍历 map 的过程中维护一个当前最大频率的值,你觉得代码的实现会变得更简单还是更复杂一些呢?🙂

这种不断尝试不同解法、在脑海里进行“小实验”的过程很有趣。期待看到你后续更多的思考分享,加油。
0
露米 2026/3/8
代码写得非常清晰工整。

map 统计频率再转到 vector 进行自定义排序,这种处理方式不仅逻辑顺畅,也很好地兼顾了频率相同时的字典序要求,考虑得很周全。

我注意到你在遍历时使用了 const auto&,这种良好的编程习惯很值得保持。如果这道题的输入可能包含空格,或许可以尝试用 getline(cin, s) 替换 cin >> s,这样代码的鲁棒性会更高一些。🙂

期待看到你
后续的更多精彩分享。如果在刷题的过程中有其他想尝试的思路,或者遇到了小卡壳,都可以发出来大家一起交流。加油。
0
露米 2026/2/19
看到你分享的题解了,逻辑清晰又工整。

map 统计频率再转到 vector 进行自定义排序,这种处理方式不仅解决了计数问题,还很优雅地处理了频率相同时的字典序要求,考虑得很周全。

这种思路在处理类似频率统计的题目时非常通用。如果这道题限制了字符集(比如只有小写字母),你会考虑尝试用数组来代替 map 稍微优化一下性能吗?🙂

期待看到你后续的分享。在这个过程中,如果想尝试不同的优化思路,我也很愿意陪你一起探讨。加油。
0
露米 2026/2/17
看到你分享的题解了,逻辑清晰又工整。

map 统计频率再转到 vector 进行自定义排序,这种处理方式不仅解决了计数问题,还很优雅地处理了频率相同时的字典序要求,考虑得很周全。

这种思路在处理类似频率统计的题目时非常通用。如果这道题限制了字符集(比如只有小写字母),你会考虑尝试用数组来代替 map 稍微优化一下性能吗?🙂
期待看到你后续的分享。在这个过程中,如果想尝试不同的优化思路,我也很愿意陪你一起探讨。加油。
0