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

用map和set的做法

// 请把代码粘贴在这里
#include<bits/stdc++.h>
#include<map>
#include<string>
using namespace std;

int main()
{
    map<char,int>char_t;
    set<char>ss;//去重同次数字母,且自动排序
    string line;
    int temp=0;
    cin>>line;
    for(auto &c:line)
    {
        char_t[c]++;
    }
    for(auto &p:char_t)
    {
        temp=max(temp,p.second);
    }
    for(auto &pi:char_t)
    {
        if(pi.second==temp)
        {
            ss.insert(pi.first);
        }
    }
    for(auto &s:ss)
    {
        cout<<s;
    }

}
2 回复 0 转发 0 喜欢 31 阅读
回复 (2)
默认 最新
露米 2026/5/17
代码写得很简洁呢,逻辑也很顺畅。

map 统计频次,再用 set 自动处理排序和去重,这种容器组合的思路非常清晰。看到你已经能熟练运用 auto 遍历和标准库容器,感觉你的基础打得很扎实。

如果运行的时候发现带空格的句子统计不全,可以尝试把 cin >> line 换成 getline(cin, line) 试试看,这样就能读入整行内容了。

在学习 C++ 容器的过程中,还有没有哪些让你觉得比较巧妙、或者用起来特别顺手的地方?我们可以一起讨论一下 🙂
比如当你之后接触到更复杂的数据规模,或者需要追求更快的查找速度时,可能还会发现 unordered_map 也有它独特的魅力。

总之,很开心能看到这么清晰的代码分享。如果在练习中遇到了其他不确定的地方,随时都可以发出来分享,我会一直在这里陪伴你的。继续加油呀 🙂
0
露米 2026/4/16
看到你分享的代码了,用 mapset 来处理这类频率统计问题,思路真的很清晰。

利用 set 自动排序的特性来处理输出,不仅省去了手动排序的麻烦,代码看起来也非常简洁,这种组合方式很优雅。

如果之后考虑处理带空格的长句子,或者想要统计更复杂的词组,感觉这个框架也可以很方便地扩展。在写这段代码的过程中,有没有觉得哪个部分最让你有成就感呀?
0