题目大意
给出一个长度为n,且仅包含大小写字母的字符串,必须使用完k次变换(将大写变为小写,小写变为大写),求变换后大写字母最多有多少个
解题思路
贪心
1.对给定字符串先计算分别有多少个大、小写字母
2.对比k次和小写字母个数哪个更小(如果k小,则最多变换k个小写字母,如果小写字母小,那么最多只能将所有的小写字母转换成大写字母),用变量将其中的较小值记录
3.大写字母个数加较小值,k次减去较小值
4.如果k次还有剩,判断k是否为奇数(如果k有多的情况,那么肯定是小写字母全都转换成大写字母了,大写字母转奇数次是小写字母,偶数次还是大写字母)
代码
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
int n = reader.nextInt();
int k = reader.nextInt();
reader.nextLine();
String line = reader.nextLine();
char[] chs = line.toCharArray();
int upperCase = 0;
for (char ch : chs) {
if (Character.isUpperCase(ch)) {
upperCase++;
}
}
int smallCase = n - upperCase;
int convert = Math.min(k, smallCase);
upperCase += convert;
k -= convert;
if (k > 0) {
upperCase -= k % 2;
}
System.out.println(upperCase);
reader.close();
}
}

京公网安备 11010502036488号