题目的主要信息:

计算给定字符串中大写字母的个数。

方法一:

遍历一遍字符串,判断每个字符是否在A-Z,如果在,则count加1,表示大写字母的个数。 alt 具体做法:

#include<iostream>

using namespace std;

int main(){
    string str;
    while(getline(cin,str)){//逐行输入
        int count=0;
        for(int i=0;i<str.size();i++){//统计大写字母的个数
            if(str[i]>='A'&&str[i]<='Z'){
                count++;
            }
        }
        cout<<count<<endl;
    }
    return 0;
}

复杂度分析:

  • 时间复杂度:O(n)O(n),需要遍历一遍字符串。
  • 空间复杂度:O(1)O(1),只用了常数空间。

方法二:

用一个字符串存储所有的大写字母,遍历一遍输入的字符串,看看是否能在R中找到当前字符,如果能找到,则表示当前字母是大写字母,count加1。

具体做法:

#include<iostream>

using namespace std;

const string R="ABCDEFGHIJKLMNOPQRSTUVWXYZ";

int main(){
    string str;
    while(getline(cin,str)){//逐行输入
        int count=0;
        for(int i=0;i<str.size();i++){//统计大写字母的个数
            if(R.find(str[i])!=R.npos){//判断当前字符是否在R中
                count++;
            }
        }
        cout<<count<<endl;
    }
    return 0;
}

复杂度分析:

  • 时间复杂度:O(n)O(n),需要遍历一遍字符串。
  • 空间复杂度:O(1)O(1),只用了常数空间。