题解 | #密码强度等级#

密码强度等级

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

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextLine()) { // 注意 while 处理多个 case
            String a = in.nextLine();
            int cont = 0;
            //长度分数
            if (a.length() <= 4) {
                cont += 5;
            } else if (a.length() >= 5 && a.length() <= 7) {
                cont += 10;
            } else if (a.length() >= 8) {
                cont = + 25;
            } else if (a.length() < 0 && a.length() > 301) {
                System.out.print("你是真能输入啊!");
            }
            //字母分数
            int numCount = 0;
            int upperCount = 0;
            int lowCount = 0;
            int  symbol = 0;
            //符号正则表达式
            String regx = "[!\"#$%&'()*+,-./:;<=>?@[\\\\\\]^_`{|}~]";
            for (int i = 0 ; i < a.length(); i++) {
                //计算数字数量
                if (Character.isDigit(a.charAt(i))) {
                    numCount++;
                } else if (Character.isUpperCase(a.charAt(i))) {
                    upperCount++;
                } else if (Character.isLowerCase(a.charAt(i))) {
                    lowCount++;
                } else if (regx.indexOf(a.charAt(i))!=-1) {
                    symbol++;
                }
            }
            
            //计算数字和字母分数
            if (upperCount > 0 && lowCount > 0) {
                cont += 20;
            } else if (upperCount > 0) {
                cont += 10;
            } else if (lowCount > 0) {
                cont += 10;
            } else {

            }
            if(numCount>1){
                cont += 20;
            }else if(numCount>0){
                cont += 10;
            }else{

            }

            //計算符號
            if (symbol == 1) {
                cont += 10;
            } else if (symbol > 1) {
                cont += 25;
            } else {

            }
            //計算獎勵
            if(symbol>0&&lowCount>0&&upperCount>0&&numCount>0){
            cont+= 5;
            }else if((lowCount>0||upperCount>0)&&numCount>0&&symbol>0){
            cont += 3;
            }else if((lowCount>0||upperCount>0)||numCount>0){
                cont += 2;
            }
            
            switch (cont/10){
                case 9 :
                System.out.print("VERY_SECURE");
                break;
                case 8 :
                System.out.print("SECURE");
                break;
                case 7:
                System.out.print("VERY_STRONG");
                break;
                case 6:
                System.out.print("STRONG");
                break;
                case 5:
                System.out.print("AVERAGE");
                break;
                case 4 :
                case 3:
                case 2:
                case 1:
                   if(cont>=25){
                    System.out.print("WEAK");
                    
                   }else{
                    System.out.print("VERY_WEAK");
                   }
                break;
                default:
                System.out.print("VERY_WEAK");
                break;

            }
        }
    }
}

#密碼#
全部评论

相关推荐

不愿透露姓名的神秘牛友
12-17 17:40
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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