leetcode_266 回文排列

593 阅读1分钟

要求

给定一个字符串,判断该字符串中是否可以通过重新排列组合,形成一个回文字符串。

示例 1:

输入: "code"
输出: false

示例 2:

输入: "aab"
输出: true

示例 3:

输入: "carerac"
输出: true

核心代码

class Solution:
    def canPermutePalindrome(self, s: str) -> bool:
        record = dict()
        for i,char in enumerate(s):
            record[char] = record.get(char,0) + 1
        odd_cnt = 0
        for key,val in record.items():
            if val % 2:
                odd_cnt += 1
                if odd_cnt > 1:
                    return False
        return True  

image.png

解题思路:行成回文的关键就是单个的字母可以有一个在最中心或者没有,其他的元素都是2的倍数个,我们只要找的就是单个字母的个数,统计即可。