回文排列
思路:回文排列的特征之一就是如果字符串中每个字符的个数都是两个,或者只有只有一个字符个数为奇数个。只有上述两种结果。
class Solution: def canPermutePalindrome(self, s: str) -> bool: // 将字符串转成个数字典 s_dic = Counter(s) // 标识几个字符出现为奇数个的字符,0表示没有,1出现一次 flag = 0 // 循环 for i in s_dic: // 如果出现了奇数个的字符 if s_dic[i] % 2 != 0: // 置一 flag += 1 // 如果大于一个 if flag > 1: return False return True
一次编辑
标签:字符,return,金典,self,flag,---,程序员,second,first From: https://www.cnblogs.com/dgqp/p/17301333.html思路:
假设
first
和second
的长度分别是m
和n
。如果
first
和second
只需要一次编辑,只有三种情况:
- 往
first
插入一个字符,此时n-m=1
,second
比first
多一个字符,其余字符都相同- 从
first
中删除一个字符得到second
,此时m-n=1
,first
比second
多一个字符,其余字符都相同。- 将
first
中的一个字符替换成不同的字符得到second
,此时m=n
,first
和second
恰好有一个字符不同。class Solution: def oneEditAway(self, first: str, second: str) -> bool: m, n = len(first),len(second) if m < n: return self.oneEditAway(second, first) if m - n > 1: return False for i, (x, y) in enumerate(zip(first, second)): if x != y: return first[i + 1:] == second[i + 1:] if m == n else first[i + 1:] == second[i:] return True