“组成字符串ku的最大次数”题目要求
一、问题描述
给定一个字符串 ss,该字符串中只包含英文大小写字母。你需要计算从字符串中最多能组成多少个字符串 "ku"。每次可以随机从字符串中选一个字符,并且选中的字符不能再使用。字符串中的字符大小写可以忽略,即大写和小写字母视为相同。
例如,输入 "AUBTMKAxfuu",从中最多能组成 1 个 "ku"。
二、测试样例
样例1:
输入:
s = "AUBTMKAxfuu"
输出:1
样例2:
输入:
s = "KKuuUuUuKKKKkkkkKK"
输出:6
样例3:
输入:
s = "abcdefgh"
输出:0
三、题目解析
3.1代码思路
1.转换字符串大小写:为了忽略大小写影响,solution 方法首先将输入字符串 s 转换为小写。
2.字符计数:初始化 countK 和 countU 两个计数器,用于分别统计字符 '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()`:计算两个数字的最小值,确保组合的数量不超过任意一个字符的数量。