HJ87密码等级

这个题目就是细心处理一下就行,比较简单

cpp 复制代码
#include <ctype.h>
#include <stdio.h>
#include <stdbool.h>

void PrintLevel(unsigned int score)
{
    if(score >= 90)
    {
        printf("VERY_SECURE");
    }
    else if(score >= 80)
    {
        printf("SECURE");
    }
    else if(score >= 70)
    {
        printf("VERY_STRONG");
    }
    else if(score >= 60)
    {
        printf("STRONG");
    }
    else if(score >= 50)
    {
        printf("AVERAGE");
    }
    else if(score >= 25)
    {
        printf("WEAK");
    }else if(score >= 0)
    {
        printf("VERY_WEAK");
    }
}

int GetScoreByStrlen(int *score, unsigned int len)
{
    if(len <= 4)
    {
        *score = 5;
    }else if(len <= 7)
    {
        *score = 10;
    }
    else {
        *score = 25;
    }
    return 0;
}

int GetScoreByCharacter(int *score, char* array, int len)
{
    bool withAlphaFlag = false;
    bool alphaWithLowerFlag = false;
    bool alphaWithUpperFlag = false;

    bool withDigitFlag = false;
    int digitCount = 0;

    bool withCharacterFlag = false;
    int characterCount = 0;

    for(int i = 0; i < len; i++)
    {
        if(isalpha(array[i]))
        {
            withAlphaFlag = true;
            if(array[i] >= 'a' && array[i] <= 'z')
            {
                alphaWithLowerFlag = true;
            }
            if(array[i] >= 'A' && array[i] <= 'Z')
            {
                alphaWithUpperFlag = true;
            }
        }
        else if(isdigit(array[i]))
        {
            withDigitFlag = true;
            digitCount++;
        }
        else {
            withCharacterFlag = true;
            characterCount++;
        }
    }

    int alphaScore = 0;
    if(!withAlphaFlag)
    {
        alphaScore = 0;
    }else {
        if(alphaWithLowerFlag && alphaWithUpperFlag)
        {
            alphaScore = 20;
        }
        else {
            alphaScore = 10;
        }
    }
    *score += alphaScore;

    int digitScore = 0;
    if(!withDigitFlag)
    {
        digitScore = 0;
    }else {
        if(digitCount == 1)
        {
            digitScore = 10;
        }
        else {
            digitScore = 20;
        }
    }
    *score += digitScore;

    int characterScore = 0;
    if(!withCharacterFlag)
    {
        characterScore = 0;
    }else {
        if(characterCount == 1)
        {
            characterScore = 10;
        }
        else {
            characterScore = 25;
        }
    }
    *score += characterScore;

    int specialScore = 0;
    if(alphaWithLowerFlag && alphaWithUpperFlag && withDigitFlag && withCharacterFlag)
    {
        specialScore = 5;
    }
    else if(withAlphaFlag && withDigitFlag && withCharacterFlag)
    {
        specialScore = 3;
    }
    else if(withAlphaFlag && withDigitFlag)
    {
        specialScore = 2;
    }
    *score += specialScore;

    return 0;
}

int main() {
    char strArray[301] = {'\0'};
    while (scanf("%s",strArray) != EOF) { // 注意 while 处理多个 case
        // 64 位输出请用 printf("%lld") to 
        int score = 0;
        
        int len = strlen(strArray);
        GetScoreByStrlen(&score, len);
        GetScoreByCharacter(&score, strArray, len);
        PrintLevel(score);
    }
    return 0;
}
相关推荐
你撅嘴真丑9 小时前
第九章-数字三角形
算法
uesowys9 小时前
Apache Spark算法开发指导-One-vs-Rest classifier
人工智能·算法·spark
ValhallaCoder10 小时前
hot100-二叉树I
数据结构·python·算法·二叉树
董董灿是个攻城狮10 小时前
AI 视觉连载1:像素
算法
智驱力人工智能10 小时前
小区高空抛物AI实时预警方案 筑牢社区头顶安全的实践 高空抛物检测 高空抛物监控安装教程 高空抛物误报率优化方案 高空抛物监控案例分享
人工智能·深度学习·opencv·算法·安全·yolo·边缘计算
孞㐑¥11 小时前
算法——BFS
开发语言·c++·经验分享·笔记·算法
月挽清风11 小时前
代码随想录第十五天
数据结构·算法·leetcode
XX風11 小时前
8.1 PFH&&FPFH
图像处理·算法
NEXT0611 小时前
前端算法:从 O(n²) 到 O(n),列表转树的极致优化
前端·数据结构·算法
代码游侠12 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法