30组成字符串ku的最大次数-青训营刷题
问题描述
给定一个字符串 ss,该字符串中只包含英文大小写字母。你需要计算从字符串中最多能组成多少个字符串 "ku"
。每次可以随机从字符串中选一个字符,并且选中的字符不能再使用。字符串中的字符大小写可以忽略,即大写和小写字母视为相同。
例如,输入 "AUBTMKAxfuu"
,从中最多能组成 1 个 "ku"
。
测试样例
样例1:
输入:
s = "AUBTMKAxfuu"
输出:1
样例2:
输入:
s = "KKuuUuUuKKKKkkkkKK"
输出:6
样例3:
输入:
s = "abcdefgh"
输出:0
代码如下:
import java.util.*;
public class Main {
public static int solution(String s) {
int countK = 0;
int countU = 0;
// 遍历字符串,统计 'k' 和 'u' 的数量
for (char c : s.toCharArray()) {
char lowerChar = Character.toLowerCase(c); // 将字符转换为小写
if (lowerChar == 'k') {
countK++;
} else if (lowerChar == 'u') {
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);
}
}
代码解释:
好的!这段代码的主要功能是统计一个字符串中字符 'k'
和 'u'
的数量,并返回它们数量的较小值。以下是对代码的详细解释:
1. 函数定义
java复制
public static int solution(String s)
-
这是一个静态方法(
static
),名为solution
,它接收一个字符串参数s
,并返回一个整数。 -
public
表示这个方法可以被其他类调用。
2. 变量初始化
java复制
int countK = 0;
int countU = 0;
-
定义了两个变量
countK
和countU
,分别用于统计字符串中'k'
和'u'
的数量。初始值都为 0。
3. 遍历字符串
java复制
for (char c : s.toCharArray()) {
char lowerChar = Character.toLowerCase(c); // 将字符转换为小写
if (lowerChar == 'k') {
countK++;
} else if (lowerChar == 'u') {
countU++;
}
}
-
s.toCharArray()
:将字符串s
转换为字符数组,这样可以逐个字符地遍历字符串。 -
Character.toLowerCase(c)
:将当前字符c
转换为小写。这是因为'K'
和'k'
,以及'U'
和'u'
应该被视为相同的字符。 -
if
和else if
判断:-
如果转换后的字符是
'k'
,则countK
加 1。 -
如果转换后的字符是
'u'
,则countU
加 1。
-
-
这段代码会逐个检查字符串中的每个字符,并统计
'k'
和'u'
的数量。
4. 返回结果
java复制
return Math.min(countK, countU);
-
使用
Math.min
函数,返回countK
和countU
中的较小值。 -
这个结果表示字符串中
'k'
和'u'
的数量中较小的那个值。
5. 主函数
java复制
public static void main(String[] args) {
System.out.println(solution("AUBTMKAxfuu") == 1);
System.out.println(solution("KKuuUuUuKKKKkkkkKK") == 6);
System.out.println(solution("abcdefgh") == 0);
}
-
这是程序的入口点。
-
调用了
solution
方法,并传入了几个测试字符串:-
"AUBTMKAxfuu"
:包含 1 个'k'
和 2 个'u'
,返回值为 1。 -
"KKuuUuUuKKKKkkkkKK"
:包含 10 个'k'
和 6 个'u'
,返回值为 6。 -
"abcdefgh"
:不包含'k'
和'u'
,返回值为 0。
-
-
使用
System.out.println
输出布尔值,表示solution
方法的返回值是否与预期值相等。
总结
这段代码的核心逻辑是:
-
遍历字符串,统计
'k'
和'u'
的数量(忽略大小写)。 -
返回这两个数量中的较小值。
这种逻辑可以用于一些简单的字符统计问题,例如检查某种模式的匹配程度(比如 'ku'
的组合数量)。