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

如何用Python找出回文中缺失的字符?

找出回文中缺失字符的Python实现

针对需求,这里提供两种实用的实现方法,对应你推测的思路:

方法一:统计字符出现次数(集合差集思路延伸)

回文字符串的核心特性是:每个字符的出现次数要么是偶数,要么仅存在一个出现奇数次的字符(当字符串长度为奇数时,该字符是回文的中心)。我们可以通过统计每个字符的出现次数,找到那个唯一出现奇数次的字符,就是缺失的回文组成字符。

from collections import Counter

def find_missing_char(s):
    char_counts = Counter(s)
    for char, count in char_counts.items():
        if count % 2 != 0:
            return char
    return ""  # 输入符合回文缺失单个字符的情况不会触发此返回

# 测试示例
input_str = "abcdeedba"
print(find_missing_char(input_str))  # 输出: c

方法二:拆分字符串对称对比

利用回文的对称性,将字符串拆分为前后两部分,把后半部分反转后和前半部分对比,通过字符计数的差异找到缺失的字符。如果字符串长度为奇数,先跳过中间的字符(因为它本就不需要成对)。

from collections import Counter

def find_missing_char_by_split(s):
    length = len(s)
    half_len = length // 2
    first_half = s[:half_len]
    # 跳过中间字符,取后半部分并反转
    second_half_reversed = s[half_len + (length % 2):][::-1]
    
    count_first = Counter(first_half)
    count_second = Counter(second_half_reversed)
    
    # 对比计数,找出差异字符
    for char in count_first:
        if count_first[char] != count_second.get(char, 0):
            return char
    # 兜底检查后半部分的独有字符(正常场景下不会走到这)
    for char in count_second:
        if count_second[char] != count_first.get(char, 0):
            return char
    return ""

# 测试示例
input_str = "abcdeedba"
print(find_missing_char_by_split(input_str))  # 输出: c

两种方法的适用场景:

  • 方法一逻辑简单,无需依赖字符串的对称结构,只要输入是“仅缺失一个字符的回文”就有效;
  • 方法二更贴合回文的对称特性,适合字符串本身接近对称排列的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 08:26:18