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

61 阅读2分钟

组成字符串ku的最大次数

问题描述

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

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


测试样例

样例1:

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

样例2:

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

样例3:

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

解题思路

题目被比较简单,只需要将字符串转化成数组进行处理即可。

  • 字符数组转换

    • 首先,通过 toCharArray 方法将输入的字符串 s 转换为字符数组 arr。这样做的好处是方便后续逐个字符地进行检查和统计操作。例如,对于字符串 "AUBTMKAxfuu",转换后就可以通过数组索引依次访问每个字符。
  • 计数变量初始化

    • 定义了三个整型变量:answercountk 和 countu,并将 answer 初始化为 0,countk 和 countu 分别用于统计字符 'k' 和 'u' 在字符串中出现的次数。
  • 字符遍历与计数

    • 使用 for 循环遍历字符数组 arr,循环条件是 index 从 0 开始,只要小于数组的长度就继续循环。在每次循环中:

      • 通过条件判断 if (arr[index] == 'k' || arr[index] == 'K') 来检查当前字符是否是 'k' 或者 'K',如果是,就将 countk 的值加 1。这样就实现了对字符串中所有 'k' 或 'K' 字符的计数。
      • 同理,通过条件判断 if (arr[index] == 'u' || arr[index] == 'U') 来检查当前字符是否是 'u' 或者 'U',如果是,就将 countu 的值加 1,实现对 'u' 或 'U' 字符的计数。
  • 结果确定

    • 在遍历完整个字符数组后,通过比较 countk 和 countu 的大小来确定最终要返回的值 answer。如果 countk 大于 countu,那么就将 answer 设置为 countu 的值;否则,将 answer 设置为 countk 的值。也就是说,最终返回的是字符串中 'k' 和 'u' 出现次数较少的那个次数。

解题代码

public class Main {
    public static int solution(String s) {
        char[] arr = s.toCharArray();
        int answer = 0;
        int countk = 0;
        int countu = 0;
        for (int index = 0; index < arr.length; index++) {
            if (arr[index] == 'k' || arr[index] == 'K') {
                countk++;
            }
            if (arr[index] == 'u' || arr[index] == 'U') {
                countu++;
            }
        }
        if (countk > countu) {
            answer = countu;
        } else {
            answer = countk;
        }
        return answer;
    }

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