class Solution:
def canPermutePalindrome(self, s: str) -> bool:
#hash表思想
count = collections.Counter(s)
res = 0
#如果是回文数的话,那么value应该都是偶数,至多出现一个奇数,所有奇数如果出现的次数大于1就不是回文
for value in count.values():
if value % 2:
res += 1
if res > 1 :
return False
return True
#消消乐的思想,回文的话必须成对出现,如果成对出现就消掉
S = set()
for char in s:
if char not in S:
S.add(char)
else:
S.remove(char)
#如果字符串的长度是奇数的话,那么就允许最后生一个孤儿元素,否则就不剩
return len(S)<=1
- 回文串的定义不用多说,两种方法
- 消消乐
- 如果是回文字符串肯定是成对出现的,那就把所有成对的全部敲掉,最后最多剩一个孤儿元素
- hash表
- 做统计,单独元素至多有一个,如果这个元素超过俩就不是回文串了