力扣 构造 K 个回文字符串

题目:https://leetcode-cn.com/problems/construct-k-palindrome-strings/

给定一个字符串s,一个整数k,问能否使用s中的所有字符构造出k个回文字符串。

解题思路:

  1. 如果字符串s长度小于k,则一定不能构造k个回文。因为最多是让每个字符当作一个回文串,这样也比k小。
  2. 如果字符串s中奇数个字符的数量比k大,那使用s中的所有字符构造出来的回文串的数量一定比k大,因为最小的情况就是让这些奇数字符做为回文串的中心位置。
  3. 除了以上两种情况,其他情况都可行。

代码:

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;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值