题解 | #密码强度等级#

密码强度等级

https://www.nowcoder.com/practice/52d382c2a7164767bca2064c1c9d5361

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            String s = sc.nextLine();
            char[] chars = s.toCharArray();
            int m1 = evaluateLen(chars);
            int m2 = evaluateChar(chars);
            int m3 = evaluateNum(chars);
            int m4 = evaluateSign(chars);
            int m5 = getBonus(m2,m3,m4);
            getStrength(m1,m2,m3,m4,m5);
        }
    }

    public static int evaluateLen(char[] chars) {
        int marks = 0;
        int len = chars.length;
        if (len<=4){
            marks = 5;
        }
        if ((len>=5)&&(len<=7)){
            marks = 10;
        }
        if (len>=8){
            marks = 25;
        }
        return marks;
    }
    public static int evaluateChar(char[] chars) {
        int marks = 0;
        int countCap = 0;
        int countLow = 0;
//        while(marks<20){
        for (char aChar : chars) {
            if (marks>20){
                break;
            }
            if ((aChar >= 'A') && (aChar <= 'Z')&&countCap!=1) {
                marks += 10;
                countCap++;
            }
            if ((aChar >= 'a') && (aChar <= 'z')&&countLow!=1) {
                marks += 10;
                countLow++;
            }
        }
//        }
        return marks;
    }
    public static int evaluateNum(char[] chars) {
        int marks = 0;
//        while(marks<20){
        for (char aChar : chars) {
            if(marks>20){
                break;
            }
            if ((aChar >= '0') && (aChar <= '9')) {
                marks += 10;
            }
        }
//            break;
//        }
        return marks;
    }
    public static int evaluateSign(char[] chars) {
        int marks = 0;
//        while(marks<25){

        for (char aChar : chars) {
            if (marks>=25){
                break;
            }
            if (marks==10){
                if ((aChar >= 32) && (aChar <= 47) || (aChar >= 58) && (aChar <= 64) || (aChar >= 91) && (aChar <= 96)||(aChar >= 123) && (aChar <= 126) ) {
                    marks += 15;
                }
            }
            if (marks==0){
                if ((aChar >= 32) && (aChar <= 47) || (aChar >= 58) && (aChar <= 64) || (aChar >= 91) && (aChar <= 96)||(aChar >= 123) && (aChar <= 126) ) {
                    marks += 10;
                }
            }
        }
        return marks;
    }

    public static int getBonus(int n1,int n2,int n3) {
        int bonus = 0;
        if(n1>=10&&n2>=10){
            bonus = 2;
        }
        if (n1>=10&&n2>=10&&n3>=10){
            bonus = 3;
        }
        if (n1==20&&n1>=10&&n3>=10){
            bonus = 5;
        }

        return bonus;
    }

    public static void getStrength(int m1,int m2,int m3,int m4,int m5) {
        int sum = m1+m2+m3+m4+m5;
        if(sum>=90){
            System.out.println("VERY_SECURE");
        }
        if((sum>=80)&&(sum<90)){
            System.out.println("SECURE");
        }
        if((sum>=70)&&(sum<80)){
            System.out.println("VERY_STRONG");
        }
        if((sum>60)&&(sum<70)){
            System.out.println("STRONG");
        }
        if((sum>=50)&&(sum<=60)){
            System.out.println("AVERAGE");
        }
        if((sum>=25)&&(sum<50)){
            System.out.println("WEAK");
        }
        if((sum>=0)&&(sum<25)){
            System.out.println("VERY_WEAK");
        }
    }
}

//最后一个用例有问题,只能改代码适应用例
全部评论

相关推荐

现在才开始投还有可能吗😭😭😭
牛客621925249号:开秋招了已经
点赞 评论 收藏
分享
06-02 15:17
门头沟学院 Java
心爱的idea:怎么会呢 应该是打招呼有问题 问就说实习6个月全国可飞随时到岗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务