描述
题目描述
首先给定了我们的一个字符串, 里面可能含有空格, 问我们这个字符串的里面多有少个大写的字母
题解
解法一: 正常的模拟
实现思路
我们可以手动一个个的模拟来判断是否是大写字母如果是的话, 答案加一
图解代码
代码实现
#include <bits/stdc++.h>
using namespace std;
signed main() {
string s;
while (getline(cin, s)) {
int res = 0;
for (auto &it : s)
if (isupper(it)) res += 1;
// 遍历我们的字符串, 如果我们的这个字符串当前的这位字符是大写字母, 我们把答案加一
cout << res << "\n";
// 输出我们的答案
}
return 0;
}
时空复杂度分析
时间复杂度:
理由如下: 我们遍历了一次我们的字符串
空间复杂度:
理由如下: 我们只是引入了常数级别的空间
解法二: lambda表达式
实现思路
我们可以使用中的对于的一个库函数, 我们可以用写一个表达式来用于传入我们的里面, 用于统计我们有多少个大写字母
代码实现
#include <bits/stdc++.h>
using namespace std;
signed main() {
string s;
while (getline(cin, s)) {
cout << count_if(s.begin(), s.end(), [&](const auto &c) -> bool {
return isupper(c);
}) << "\n";
// 这个是用于返回区间内满足条件的个数的
}
return 0;
}
时空复杂度分析
时间复杂度:
理由如下: 我们遍历了一次我们的字符串
空间复杂度:
理由如下: 我们只是引入了常数级别的空间