构造 K 个回文字符串 ^.^ 2022/08/16

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();
    }

你可能感兴趣的:(构造 K 个回文字符串 ^.^ 2022/08/16)