题目:https://leetcode-cn.com/problems/construct-k-palindrome-strings/
给定一个字符串s,一个整数k,问能否使用s中的所有字符构造出k个回文字符串。
解题思路:
- 如果字符串s长度小于k,则一定不能构造k个回文。因为最多是让每个字符当作一个回文串,这样也比k小。
- 如果字符串s中奇数个字符的数量比k大,那使用s中的所有字符构造出来的回文串的数量一定比k大,因为最小的情况就是让这些奇数字符做为回文串的中心位置。
- 除了以上两种情况,其他情况都可行。
代码:
class Solution {
public boolean canConstruct(String s, int k) {
if(s.length() < k) return false;
int[] a = new int[200];
for(int i = 0; i < s.length(); i ++){
a[s.charAt(i)] ++;
//System.out.println(a[i]);
}
int num = 0;
for(int i = 97; i <= 122; i++){
if(a[i]%2!=0){
num ++;
}
}
if(num > k) return false;
return true;
}
}