改写成C++语言def min_changes(s: str) -> int: n = len(s) upper_count = [0] * (n + 1) lower_count = [0] * (n + 1) for i in range(1, n + 1): upper_count[i] = upper_count[i - 1] + (s[i - 1].islower()) lower_count[i] = lower_count[i - 1] + (s[i - 1].isupper()) ans = float('inf') for i in range(n + 1): ans = min(ans, upper_count[i] + lower_count[n] - lower_count[i]) return ans s = input() print(min_changes(s))
时间: 2024-02-12 16:06:04 浏览: 103
以下是将代码翻译成 C++ 的版本:
```c++
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
int min_changes(string s) {
int n = s.length();
vector<int> upper_count(n+1, 0);
vector<int> lower_count(n+1, 0);
for (int i = 1; i <= n; i++) {
upper_count[i] = upper_count[i-1] + islower(s[i-1]);
lower_count[i] = lower_count[i-1] + isupper(s[i-1]);
}
int ans = INT_MAX;
for (int i = 0; i <= n; i++) {
ans = min(ans, upper_count[i] + lower_count[n] - lower_count[i]);
}
return ans;
}
int main() {
string s;
cin >> s;
cout << min_changes(s) << endl;
return 0;
}
```
相关问题
def min_changes(s: str) -> int: n = len(s) upper_count = [0] * (n + 1) lower_count = [0] * (n + 1) for i in range(1, n + 1): upper_count[i] = upper_count[i - 1] + (s[i - 1].islower()) lower_count[i] = lower_count[i - 1] + (s[i - 1].isupper()) ans = float('inf') for i in range(n + 1): ans = min(ans, upper_count[i] + lower_count[n] - lower_count[i]) return ans
这是一个 Python 函数,接受一个字符串参数 s,并返回一个整型值。该函数的作用是计算将字符串 s 中的字母大小写转换次数的最小值。函数首先定义了两个长度为 n+1 的数组 upper_count 和 lower_count,其中 n 为字符串 s 的长度。这两个数组分别记录了 s 的前缀中小写字母和大写字母的数量。然后,函数遍历 0 到 n 的所有可能的位置 i,计算将 s 中前 i 个字符中的大写字母转换为小写字母以及将 s 中后 n-i 个字符中的小写字母转换为大写字母所需的次数之和,并选取这些值中的最小值作为答案。最后,函数返回答案。
这个函数与上一个函数的主要区别是在计算前缀中小写字母和大写字母的数量时,使用了 s[i - 1].islower() 和 s[i - 1].isupper() 来判断是否为小写字母和大写字母,而不是使用三目运算符。此外,计算后缀中小写字母和大写字母的数量时直接使用了 lower_count[n],而不是使用 n - i - upper_count[n]。这些修改使得代码更加简洁易懂。
以下是改写后的代码:
```python
def min_case_change(s: str) -> int:
n = len(s)
upper_count = [0] * (n + 1)
lower_count = [0] * (n + 1)
for i in range(1, n + 1):
upper_count[i] = upper_count[i - 1] + s[i - 1].islower()
lower_count[i] = lower_count[i - 1] + s[i - 1].isupper()
ans = float("inf")
for i in range(n + 1):
count = upper_count[i] + lower_count[n] - lower_count[i]
ans = min(ans, count)
return ans
```
阅读全文