https://leetcode.cn/problems/construct-k-palindrome-strings
这是一个回文串的题,想一下,回文串有什么特征呢?就是除了中心位的,所有的字符都可以找到另一个自己。那么回文串有以下两种情况:
1.长度为偶数,所有的字符都有另一个自己
2.长度为奇数,除了中间的字符所有的字符都有另一个自己
那么,我们是不是可以看原字符串中有多少个字符,出现了奇数次。再比较一下,这个奇数次能不能被安插到对应的回文串中就可以了?bingo……
只是注意一个小坑,我也是提交了一次才注意到,如果原字符串的长度为2,要求出来7个回文串,那也是不太可能。示例中也给出了
输入:s = "cr", k = 7
输出:false
解释:我们没有足够的字符去构造 7 个回文串。
最后给出代码
public boolean canConstruct(String s, int k) {
char[] chars = s.toCharArray();
int[] charInt = new int[26];
for (char aChar : chars) {
charInt[aChar - 'a']++;
}
int count = 0;
for (int i : charInt) {
if (i % 2 != 0) {
count++;
}
}
return k >= count && k <= s.length();
}