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值,就是满足条件的。

posted on 2020-04-05 05:00  Sempron2800+  阅读(137)  评论(0编辑  收藏  举报