题意:
        规则如下:
        
       
     

方法一:
直接模拟

思路:
        直接模拟。
        循环遍历字符串,分别统计字母个数、数字个数、符号个数,和判断是否有大小写混合字母。
        然后,根据加分规则进行计算。
        最后,根据计算的值判断属于什么安全等级。

      
#include <bits/stdc++.h>

using namespace std;

int main(){
    string s;
    while(cin >> s){
        int sum=0;
        int n1=0,n2=0,n3=0;//字母个数、数字个数、符号个数
        int len=s.size();
        if(len<=4)//根据字符串长度计算
            sum+=5;
        else if(len<8)
            sum+=10;
        else 
            sum+=25;
        int f1=0,f2=0;
        int num=0;//判断是否有大小写混合字母
        for(int i=0;i<len;i++){//统计字母个数、数字个数、符号个数
            if((s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z')){//字母
                n1++;
                if(s[i]>='a'&&s[i]<='z'){
                    if(f1==0)
                        num++,f1=1;
                }else{
                    if(f2==0)
                        num++,f2=1;
                }
            }else if(s[i]>='0'&&s[i]<='9')//数字
                n2++;
            else//符号
                n3++;
        }
        if(n1>0){//根据字母个数计算
            if(num==1)
                sum+=10;
             else if(num==2)
                sum+=20;
        }
        if(n2==1)//根据数字个数计算
            sum+=10;
        else if(n2>1)
            sum+=20;
        if(n3==1)//根据符号个数计算
            sum+=10;
        else if(n3>1)
            sum+=25;
        if(num==2&&n1&&n2&&n3)//大小写字母、数字和符号
            sum+=5;
        else if(n1&&n2&&n3)//字母、数字和符号
            sum+=3;
        else if(n1&&n2)//字母和数字
            sum+=2;
        //评分
        if(sum>=90)
            cout << "VERY_SECURE\n";
        else if(sum>=80)
            cout << "SECURE\n";
        else if(sum>=70)
            cout << "VERY_STRONG\n";
        else if(sum>=60)
            cout << "STRONG\n";
        else if(sum>=50)
            cout << "AVERAGE\n";
        else if(sum>=25)
            cout << "WEAK\n";
        else if(sum>=0)
            cout << "VERY_WEAK\n";
    }
    
    return 0;
}


时间复杂度:
空间复杂度:

方法二:
C++函数

思路:
        直接运用C++函数isalpha()、isdigit()判断字母和数字。
        其他也是参照方法一模拟。

#include <bits/stdc++.h>

using namespace std;

int main(){
    string s;
    while(cin >> s){
        int sum=0;
        int n1=0,n2=0,n3=0;//字母个数、数字个数、符号个数
        int len=s.size();
        if(len<=4)//根据字符串长度计算
            sum+=5;
        else if(len<8)
            sum+=10;
        else
            sum+=25;
        int f1=0,f2=0;
        int num=0;//判断是否有大小写混合字母
        for(int i=0;i<len;i++){//统计字母个数、数字个数、符号个数
            if(isalpha(s[i])){//字母
                n1++;
                if(s[i]>='a'&&s[i]<='z'){
                    if(f1==0)
                        num++,f1=1;
                }else{
                    if(f2==0)
                        num++,f2=1;
                }
            }else if(isdigit(s[i]))//数字
                n2++;
            else//符号
                n3++;
        }
        if(n1>0){//根据字母个数计算
            if(num==1)
                sum+=10;
             else if(num==2)
                sum+=20;
        }
        if(n2==1)//根据数字个数计算
            sum+=10;
        else if(n2>1)
            sum+=20;
        if(n3==1)//根据符号个数计算
            sum+=10;
        else if(n3>1)
            sum+=25;
        if(num==2&&n1&&n2&&n3)//大小写字母、数字和符号
            sum+=5;
        else if(n1&&n2&&n3)//字母、数字和符号
            sum+=3;
        else if(n1&&n2)//字母和数字
            sum+=2;
        //评分
        if(sum>=90)
            cout << "VERY_SECURE\n";
        else if(sum>=80)
            cout << "SECURE\n";
        else if(sum>=70)
            cout << "VERY_STRONG\n";
        else if(sum>=60)
            cout << "STRONG\n";
        else if(sum>=50)
            cout << "AVERAGE\n";
        else if(sum>=25)
            cout << "WEAK\n";
        else if(sum>=0)
            cout << "VERY_WEAK\n";
    }
    
    return 0;
}

时间复杂度:
空间复杂度: