算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从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
好了,今天的文章就到这里,如果觉得有所收获,请顺手点个在看或者转发吧,你们的支持是我最大的动力 。
上期推文: