如何统计字符串中出现次数最多的5个字母 同频次按字母序排序
字符串高频Top5字母统计实现方案
需求明确
- 功能目标:从输入字符串中统计出现次数最多的5个英文字母
- 排序规则:多个字母出现频次相同时,按字母表升序优先排列
- 示例输入:
'aaaaa-bbb-zx-yz-xy'
实现逻辑拆解
- 字符串预处理:过滤所有非英文字母的字符,统一转换为小写(如需区分大小写可删除转小写逻辑)
- 频次统计:遍历有效字母,统计每个字母的出现次数
- 复合排序:优先按字母出现频次降序排列,频次相同的按字母本身的ASCII码升序排列
- 结果截取:取排序后前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
相关产品推荐
相关产品推荐

