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

查找字符串列表中每个位置出现次数最多的字符

按位置统计高频字符的代码修复方案

问题根源

原代码循环次数取的是单词列表的长度(range(len(words))),而非所有单词中的最大长度,且未判断单词长度是否足够,直接访问item[i]导致短单词索引越界。

修正方案

核心思路:先确定需要处理的最大位置数(最长单词的长度),逐位置收集有效字符、统计频率,最后按「频率降序+字母序升序」选出目标字符。

修正后的代码

words = ['house', 'garden', 'kitchen', 'balloon', 'home', 'park', 'affair', 'kite', 'hello', 'portrait', 'angel', 'surfing']
maxOccurs = ""

# 获取所有单词的最大长度,确定要处理的位置总数
max_length = max(len(word) for word in words)

for i in range(max_length):
    char_counter = {}
    for word in words:
        # 仅处理长度覆盖当前位置的单词,避免索引越界
        if i < len(word):
            char = word[i]
            char_counter[char] = char_counter.get(char, 0) + 1
    
    # 按「出现次数降序,次数相同则字母序升序」排序,取首位字符
    selected_char = sorted(char_counter.items(), key=lambda x: (-x[1], x[0]))[0][0]
    maxOccurs += selected_char

print(maxOccurs)  # 输出结果:hareennt

关键说明

  1. 确定循环范围:通过max(len(word) for word in words)拿到最长单词的长度,确保覆盖所有可能的字符位置
  2. 避免索引越界:遍历单词时增加i < len(word)的判断,跳过长度不足的单词
  3. 高效统计频率:用字典char_counter直接记录每个字符的出现次数,比原代码的列表统计更高效
  4. 排序规则实现:sorted的key参数用-x[1]实现次数降序,x[0]实现字母序升序,确保次数相同时选字母靠前的字符

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 08:35:18