📌  相关文章
📜  检查给定的字符串是否可以通过仅删除单一类型的字符来制作回文 |第 2 组(1)

📅  最后修改于: 2023-12-03 15:26:49.580000             🧑  作者: Mango

检查给定的字符串是否可以通过仅删除单一类型的字符来制作回文

本题要求判断给定的字符串是否可以通过仅删除单一类型的字符来制作回文。

问题描述

给定一个字符串,如何确定它能够通过仅删除单一类型的字符来制作回文?

输入格式

输入一个字符串,长度为 $n$,$1\le n\le 10^5$。

输出格式

如果字符串可以通过仅删除单一类型的字符来制作回文,则输出 Yes,否则输出 No。

样例输入
abca
样例输出
Yes
解题思路

此题可以遍历字符串,记录每个字符出现的次数:

  1. 如果只有一个字符出现了奇数次,那么删除这个字符后,剩余字符可以组成回文字符串。
  2. 如果出现两个或以上字符的次数为奇数次,那么无法通过删除单一类型的字符来制作回文。
参考代码
def is_palindrome(s: str) -> bool:
    count = [0] * 26
    for c in s:
        count[ord(c) - ord('a')] += 1
    odd_count = 0
    for i in range(26):
        if count[i] % 2 == 1:
            odd_count += 1
        if odd_count > 1:
            return False
    return True

s = input().strip()
if is_palindrome(s):
    print("Yes")
else:
    print("No")
使用python语言解决此题。

代码思路:

1. 定义了函数is_palindrome,判断输入字符串是否可以被删除单一类型字符制作为回文字符串。
2. 每个字符出现的次数记录在了count数组中。
3. 对26个字母计数,看哪些出现了奇数次,如果大于1,则不为回文字符串。
4. 判断完毕,返回True或False。