题目描述:
小美定义以下三种单词是合法的: * 1.所有字母都是小写。例如:good * 2.所有字母都是大写。例如:APP * 3.第一个字母大写,后面所有字母都是小写。例如:Alice 现在小美拿到了一个单词,她每次操作可以修改任意一个字符的大小写。小美想知道最少操作几次可以使得单词变成合法的?
思路:
1.先处理输入 控制台输入 初始化大写小写字母的个数
2.遍历字符串,求字符串中大写 小写的字母各有多少个
3.返回Big small 的最小值,即表示需要操作的最小次数
4.处理合法单词最后一种情况:第一个字母大写,后面所有字母都是小写。例如:Alice
代码:
import java.util.Scanner;
/**
* 小美定义以下三种单词是合法的:
* 1.所有字母都是小写。例如:good
* 2.所有字母都是大写。例如:APP
* 3.第一个字母大写,后面所有字母都是小写。例如:Alice
* 现在小美拿到了一个单词,她每次操作可以修改任意一个字符的大小写。小美想知道最少操作几次可以使得单词变成合法的?
*/
public class UptoLow {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String str = sc.nextLine();
// 初始化字符串中大写小写字母的个数
int big = 0;
int small = 0;
// 遍历字符串 求字符串中小写大写字符个有多少个
for (int i = 0; i < str.length(); i++) {
// 检查当前字符是否为小写
if(str.charAt(i) >= 'a' && str.charAt(i) <= 'z'){
small++;
}else{
big++;
}
}
// 求当前字符串中个数最大的是大写还是小写
int result = Math.min(small, big);
// 第三种情况:若字符串首字母为大写,其余为小写,也为合法的单词 判断字符串首字母是否为大写
if(str.charAt(0) >= 'a' && str.charAt(0) <= 'z'){
result = Math.min(result, big + 1);
}else{
result = Math.min(result, big -1);
}
System.out.println(result);
}
}