You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何统计字符串中出现次数最多的5个字母 同频次按字母序排序

字符串高频Top5字母统计实现方案

需求明确

  • 功能目标:从输入字符串中统计出现次数最多的5个英文字母
  • 排序规则:多个字母出现频次相同时,按字母表升序优先排列
  • 示例输入:'aaaaa-bbb-zx-yz-xy'

实现逻辑拆解

  1. 字符串预处理:过滤所有非英文字母的字符,统一转换为小写(如需区分大小写可删除转小写逻辑)
  2. 频次统计:遍历有效字母,统计每个字母的出现次数
  3. 复合排序:优先按字母出现频次降序排列,频次相同的按字母本身的ASCII码升序排列
  4. 结果截取:取排序后前5位的字母作为最终输出

代码实现

Python 标准库实现(推荐,简洁高效)

from collections import Counter

def get_top5_letters(input_str: str) -> list:
    # 提取所有英文字母并统一转小写
    valid_letters = [char.lower() for char in input_str if char.isalpha()]
    # 统计字母频次
    letter_counter = Counter(valid_letters)
    # 复合排序:负频次实现降序,字母本身实现升序
    sorted_result = sorted(letter_counter.items(), key=lambda x: (-x[1], x[0]))
    # 提取前5位字母
    return [item[0] for item in sorted_result[:5]]

# 示例测试
if __name__ == "__main__":
    test_input = 'aaaaa-bbb-zx-yz-xy'
    print(get_top5_letters(test_input))
    # 输出结果:['a', 'b', 'x', 'y', 'z']

原生Python实现(无需引入依赖)

def get_top5_letters(input_str: str) -> list:
    letter_count = {}
    for char in input_str:
        if char.isalpha():
            lower_char = char.lower()
            letter_count[lower_char] = letter_count.get(lower_char, 0) + 1
    # 排序逻辑和标准库实现一致
    sorted_result = sorted(letter_count.items(), key=lambda x: (-x[1], x[0]))
    return [item[0] for item in sorted_result[:5]]

内容的提问来源于stack exchange,提问作者morax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 00:06:03