组成字符串ku的最大次数
问题描述
给定一个字符串 ss,该字符串中只包含英文大小写字母。你需要计算从字符串中最多能组成多少个字符串 "ku"。每次可以随机从字符串中选一个字符,并且选中的字符不能再使用。字符串中的字符大小写可以忽略,即大写和小写字母视为相同。
例如,输入 "AUBTMKAxfuu",从中最多能组成 1 个 "ku"。
测试样例
样例1:
输入:
s = "AUBTMKAxfuu"
输出:1
样例2:
输入:
s = "KKuuUuUuKKKKkkkkKK"
输出:6
样例3:
输入:
s = "abcdefgh"
输出:0
解题思路
题目被比较简单,只需要将字符串转化成数组进行处理即可。
-
字符数组转换:
- 首先,通过
toCharArray方法将输入的字符串s转换为字符数组arr。这样做的好处是方便后续逐个字符地进行检查和统计操作。例如,对于字符串"AUBTMKAxfuu",转换后就可以通过数组索引依次访问每个字符。
- 首先,通过
-
计数变量初始化:
- 定义了三个整型变量:
answer、countk和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);
}
}