Python Palindrome错误

时间:2015-03-24 14:09:50

标签: python python-2.7 palindrome

这是我对问题的解决方案:是否可以对给定的字符串进行置换以形成回文。对于很少的文本案例我是正确的。对于给定的情况,它打印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")

1 个答案:

答案 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}}