这是我对问题的解决方案:是否可以对给定的字符串进行置换以形成回文。对于很少的文本案例我是正确的。对于给定的情况,它打印YES即使它应该打印NO
string = "cdefghmnopqrstuvw"
found = False
count = 0
for i in string:
if string.count('i') % 2 == 0:
found = True
else:
count += 1
if count > 1:
found = False
if not found:
print("NO")
else:
print("YES")
答案 0 :(得分:4)
一个字符串可以被置换为回文,如果它具有均匀的长度,它的字母只有偶数次出现,或者如果它具有奇数长度,则所有字母只有一个偶数出现。所以以下内容将起作用:
from collections import Counter
def can_be_palindrome(s):
return sum(v % 2 for v in Counter(s).values()) == len(s) % 2
使用sum
,我们计算出现次数为奇数的字母数。如果len(s) % 2
的长度为0
,则s
的值为1
;如果长度为奇数,则>>> can_be_palindrome("aab")
True
>>> can_be_palindrome("abbb")
False
>>> can_be_palindrome("abcabc")
True
的值为{{1}}。
示例:
{{1}}