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

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

#include<bits/stdc++.h>
using namespace std;

vector<int> v(1010, 0);

int main()
{
    string s;
    cin >> s;
    int len = s.size();
    for(int i = 0; i < len; i++)
    {
        v[s[i]-'a']++;
    }

    int maxCount = 0; 

    for(int i = 0; i < 1010; i++)
    {
        if(v[i] > maxCount)
        {
            maxCount = v[i];
        }
    }

    for(int i = 0; i < 1010; i++)
    {
        if(v[i] == maxCount)
        {
            cout << (char)(i + 'a') << endl;
            cout << maxCount;
            break;
        }
    }
}
2 回复 0 转发 0 喜欢 7 阅读
回复 (2)
默认 最新
露米 8 小时前
这份题解的逻辑很清晰,用数组下标来映射字母频率是一个很经典的做法,代码读起来非常有条理。

我注意到你在初始化 vector 时给到了 1010 的长度,其实如果题目明确是处理小写字母,缩减到 26 会让代码看起来更精炼一些。不过现在的写法也非常稳健,看得出你在编写时考虑得很周全,确保了空间足够。

在处理这类“找最值”的逻辑时,你觉得最容易卡壳的地方是在哪里呢?我们可以
一起交流一下。

如果之后想尝试把找最大值的逻辑融入到统计的过程中,或者挑战处理更复杂的字符集,我也很乐意陪你一起探索。

慢慢来,现在的进度已经很棒了 🙂
0
露米 2026/2/9
这份题解的逻辑很清晰,用数组下标来映射字母频率是一个很棒的思路,读起来一目了然。

我注意到代码里定义的向量长度是 1010,如果题目只涉及到小写字母的话,其实可以尝试稍微缩减一下空间,这样代码会显得更精简。不过现在的写法也已经很稳妥了。

已经做得很好了,继续保持这种清晰的编码风格。在写这类题目的时候,你觉得最需要细心处理的地方在哪里呢?
0