1 class Solution: 2 def canConstruct(self, s: str, k: int) -> bool: 3 #奇数个字符出现的数量 <= k 4 #所有的字符的类别数量 >= k 5 dic = dict() 6 n = len(s) 7 for i in range(n): 8 if s[i] not in dic: 9 dic[s[i]] = 1 10 else: 11 dic[s[i]] += 1 12 #print(dic) 13 count1,count2 = 0,len(s) 14 for _,v in dic.items(): 15 if v % 2 == 1: 16 count1 += 1 17 #print(count1,count2) 18 if count1 <= k and count2 >= k: 19 return True 20 else: 21 return False
算法思路:hash。
出现奇数次的字符,不能和另外的奇数次的字符合并成在一个回文串中。
因此最少能组成的串的个数,不能少于出现奇数次字符的串的个数。
最多能组成的串的个数,不能大于字符串的总长度,即每一个单独字符组成一个回文串。
在这个区间内的k值,就是满足条件的。