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

Python编程作业:不使用max()和count()找出字符串最频繁字符

解决方法:统计字符串中最频繁字符(不使用max()/count())

核心思路

要实现需求,分两步走:

  1. 手动统计每个字符的出现次数:用字典存储每个字符与其对应的出现次数,替代count()函数的功能。
  2. 手动找出次数最多的字符:遍历字典的键值对,跟踪当前最大次数及对应字符,替代max()函数的功能。

代码实现(区分大小写)

def main():
    my_sentence = input("Enter a sentence: ")
    # 1. 统计所有字符的出现次数
    char_counts = {}
    for ch in my_sentence:
        if ch in char_counts:
            char_counts[ch] += 1
        else:
            char_counts[ch] = 1
    
    # 2. 找出出现次数最多的字符(支持多个字符并列最多的情况)
    max_count = 0
    most_frequent_chars = []
    for char, count in char_counts.items():
        if count > max_count:
            max_count = count
            most_frequent_chars = [char]
        elif count == max_count:
            most_frequent_chars.append(char)
    
    # 输出结果
    if len(most_frequent_chars) == 1:
        print(f"The most frequent character is '{most_frequent_chars[0]}' with {max_count} occurrences.")
    else:
        chars_str = ", ".join([f"'{char}'" for char in most_frequent_chars])
        print(f"The most frequent characters are {chars_str}, each appearing {max_count} times.")

main()

代码实现(不区分大小写,如T/t视为同一字符)

如果需要忽略大小写统计,只需在遍历字符时统一转换为小写(或大写):

def main():
    my_sentence = input("Enter a sentence: ")
    char_counts = {}
    for ch in my_sentence:
        # 统一转换为小写,消除大小写差异
        normalized_char = ch.lower()
        if normalized_char in char_counts:
            char_counts[normalized_char] += 1
        else:
            char_counts[normalized_char] = 1
    
    max_count = 0
    most_frequent_chars = []
    for char, count in char_counts.items():
        if count > max_count:
            max_count = count
            most_frequent_chars = [char]
        elif count == max_count:
            most_frequent_chars.append(char)
    
    if len(most_frequent_chars) == 1:
        print(f"The most frequent character (case-insensitive) is '{most_frequent_chars[0]}' with {max_count} occurrences.")
    else:
        chars_str = ", ".join([f"'{char}'" for char in most_frequent_chars])
        print(f"The most frequent characters (case-insensitive) are {chars_str}, each appearing {max_count} times.")

main()

关键步骤解释

  • 统计字符次数:通过字典char_counts记录每个字符的出现次数,遍历输入字符串时,若字符已在字典中则计数+1,否则初始化为1,完全手动实现了count()的统计逻辑。
  • 查找最频繁字符:初始化max_count为0、most_frequent_chars为空列表,遍历字典时逐个比较计数大小:
    • 若当前字符计数大于max_count,更新最大计数并重置结果列表;
    • 若等于当前最大计数,将字符加入结果列表,支持多个字符并列最多的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 03:33:34