📅  最后修改于: 2023-12-03 15:26:49.580000             🧑  作者: Mango
本题要求判断给定的字符串是否可以通过仅删除单一类型的字符来制作回文。
给定一个字符串,如何确定它能够通过仅删除单一类型的字符来制作回文?
输入一个字符串,长度为 $n$,$1\le n\le 10^5$。
如果字符串可以通过仅删除单一类型的字符来制作回文,则输出 Yes,否则输出 No。
abca
Yes
此题可以遍历字符串,记录每个字符出现的次数:
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。