Python回文错误

Python Palindrome error

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

一个字符串可以置换为回文,如果当它的长度为偶数时,它的字母只有偶数次出现,或者如果当它的长度为奇数时,除了一个字母之外的所有字母都出现偶数次。所以以下将起作用:

from collections import Counter
def can_be_palindrome(s):
    return sum(v % 2 for v in Counter(s).values()) == len(s) % 2

使用 sum 我们计算出现奇数的字母数。如果 s 的长度为偶数,len(s) % 2 的值为 0,如果长度为奇数,则为 1

示例:

>>> can_be_palindrome("aab")
True
>>> can_be_palindrome("abbb")
False
>>> can_be_palindrome("abcabc")
True