​LeetCode刷题实战266:回文排列

算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !
今天和大家聊的问题叫做 回文排列,我们先来看题面:
https://leetcode-cn.com/problems/palindrome-permutation/

Given a string, determine if a permutation of the string could form a palindrome.

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

示例

示例 1:

输入: “code”
输出: false

示例 2:

输入: “aab”
输出: true

示例 3:

输入: “carerac”
输出: true

解题

统计字符的数量,奇数个的只能有0个或1个。
所以用个字典统计各个字符出现的频次,然后再统计频次为奇数的个数。

class Solution:
    def canPermutePalindrome(self, s: str) -> bool:
        dic = {}
        for c in s:
            if dic.get(c) == None:
                dic[c] = 1
            else:
                dic[c] += 1
        count = 0
        for num in dic.values():
            if num % 2 == 0:
                continue
            else:
                count += 1
        if count > 1:
            return False
        return True

好了,今天的文章就到这里,如果觉得有所收获,请顺手点个在看或者转发吧,你们的支持是我最大的动力 。
上期推文:
LeetCode1-260题汇总,希望对你有点帮助!
LeetCode刷题实战261:以图判树
LeetCode刷题实战262:行程和用户
LeetCode刷题实战263:丑数
LeetCode刷题实战264:丑数 II
LeetCode刷题实战265:粉刷房子II
(0)

相关推荐