LeetCode题目:1400. 构造 K 个回文字符串

题目

题目链接: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;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_41816516/article/details/106839807
今日推荐