题目
题目链接:https://leetcode-cn.com/problems/construct-k-palindrome-strings/
题目解析:
这题主要是找范围,找给你的字符串最少能拆成几个回文串,最多能拆成几个回文串。
最多回文串,就是字符串的大小,每个字母都一个回文串,所以不用求。
所以重点还是找最小回文串。那就数每个字母的个数。如果为偶数,他套哪个回文串都可以,但是为奇数就不行,所以我们主要就是找奇数个的字母。然后看要求划分k个字符串的k在不在最大最小范围之内。
比如:“leetcode” ,l: 1,e: 3,t: 1,c: 1,o: 1,d: 1
所以这个字符串最大为8,最小为6,而要求k=3,所以返回false
代码
class Solution {
public boolean canConstruct(String s, int k) {
//如果要求的字符串的大小比k值小,那肯定分不出来
if(k>s.length())
return false;
//创建数组来存放字母的个数
int[] letter = new int[26];
//循环遍历记录字母的个数
for (int i=0;i<s.length();i++) {
letter[s.charAt(i)-'a']+=1;
}
//创建变量记录奇数字母
int j=0;
//遍历数组,找奇数字母
for (int i : letter) {
if(i%2!=0)
j++;
}
//如果k在范围内,则可以划分
if(k>=j)
return true;
else
return false;
}
}