AI刷题之组成字符串ku的最大次数 | 豆包MarsCode AI刷题

66 阅读2分钟

“组成字符串ku的最大次数”题目要求

一、问题描述

给定一个字符串 ss,该字符串中只包含英文大小写字母。你需要计算从字符串中最多能组成多少个字符串 "ku"。每次可以随机从字符串中选一个字符,并且选中的字符不能再使用。字符串中的字符大小写可以忽略,即大写和小写字母视为相同。

例如,输入 "AUBTMKAxfuu",从中最多能组成 1 个 "ku"

二、测试样例

样例1:

输入:s = "AUBTMKAxfuu"
输出:1

样例2:

输入:s = "KKuuUuUuKKKKkkkkKK"
输出:6

样例3:

输入:s = "abcdefgh"
输出:0


三、题目解析

3.1代码思路

1.转换字符串大小写:为了忽略大小写影响,solution 方法首先将输入字符串 s 转换为小写。

2.字符计数:初始化 countKcountU 两个计数器,用于分别统计字符 'k''u' 的出现次数。

3.遍历字符串:通过 for 循环遍历字符串的每个字符,如果字符是 'k''u',分别更新对应的计数器。

4.计算结果:返回 'k''u' 个数的较小值,因为每个 "ku" 需要一个 'k' 和一个 'u' 才能组成。用 Math.min(countK, countU) 来确保使用最多的完整组合。

3.2详细代码

public class Main {
    public static int solution(String s) {
        // 将字符串转换为小写,以便忽略大小写
        s = s.toLowerCase();
        
        // 初始化计数器
        int countK = 0;
        int countU = 0;
        
        // 遍历字符串,统计 'k' 和 'u' 的个数
        for (char c : s.toCharArray()) {
            if (c == 'k') {
                countK++;
            } else if (c == 'u') {
                countU++;
            }
        }
        
        // 计算最多能组成多少个 "ku"
        // 使用 Math.min 函数来计算 countK 和 countU 的最小值
        return Math.min(countK, countU);
    }

    public static void main(String[] args) {
        System.out.println(solution("AUBTMKAxfuu") == 1);
        System.out.println(solution("KKuuUuUuKKKKkkkkKK") == 6);
        System.out.println(solution("abcdefgh") == 0);
    }
}

四、知识总结

这段代码比较简单,借助豆包即可完成代码的编写。主要涉及的知识有:

字符串处理

-   `toLowerCase()`:将字符串转换为小写,便于不区分大小写地处理字符匹配。
-   `toCharArray()`:将字符串转换为字符数组,方便逐字符遍历。

循环与条件判断

-   `for` 循环用于遍历字符串中的每个字符。
-   `if-else if` 判断:根据字符内容更新计数器,简单清晰。

数学函数

-   `Math.min()`:计算两个数字的最小值,确保组合的数量不超过任意一个字符的数量。