考虑三种情况分别需要的操作次数,取最小值即可
第一种情况操作次数:字符串中的大写字母数量
第二种情况操作次数:字符串中的小写字母数量
第三种情况操作次数:字符串中第一个字符是否为大写,以及后面字符串中的小写字母数量
C++
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main() {
    string s;
    cin >> s;
    int l = 0, r = 0;
    for (char val : s) {
        if (isupper(val)) {
            l += 1;
        } else {
            r += 1;
        }
    }
    int n = s.size();
    int res = min(n - l, n - r);
    if (isupper(s[0])) {
        res = min(res, n - 1 - r);
    } else {
        res = min(res, 1 + n - 1 - l);
    }
    cout << res << endl;
    return 0;
}
Java
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String s = scanner.nextLine();
        int l = 0, r = 0;
        for (char val : s.toCharArray()) {
            if (Character.isUpperCase(val)) {
                l += 1;
            } else {
                r += 1;
            }
        }
        int n = s.length();
        int res = Math.min(n - l, n - r);
        if (Character.isUpperCase(s.charAt(0))) {
            res = Math.min(res, n - 1 - r);
        } else {
            res = Math.min(res, 1 + n - 1 - l);
        }
        System.out.println(res);
    }
}
Python
s = input()
l = r = 0
for val in s:
    if val.isupper():
        l += 1
    else:
        r += 1
n = len(s)
res = min(n - l, n - r)
if s[0].isupper():
    res = min(res, n - 1 - r) 
else:
    res = min(res, 1 + n - 1 - l)
print(res)
        小美定义以下三种单词是合法的: 1.所有字母都是小写。例如:good
2.所有字母都是大写。例如:APP 3.第一个字母大写,后面所有字母都是小写。例如:Alice
现在小美拿到了一个单词,她每次操作可以修改任意一个字符的大小写。小美想知道最少操作几次可以使得单词变成合法的?
一个仅由大写字母和小写字母组成的字符串,长度不超过105
一个整数,代表操作的最小次数。
输入
AbC
输出
1
说明
变成 ABC 或者 Abc 均可。只需要1次操作。