题解 | #密码强度等级#

密码强度等级

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 s = in.nextLine();
            char[] arr = s.toCharArray();
            int grade = 0;
            boolean char1Flag = false;
            boolean char2Flag = false;
            boolean numFlag = true;
            boolean scharFlag = true;
            //1. 长度
            if (s.length() <= 4) {
                grade += 5;
            } else if (s.length() >= 8) {
                grade += 25;
            } else {
                grade += 10;
            }
            // System.out.println(grade);

            //2. 字母
            if (s.matches(".*[a-z].*") && s.matches(".*[A-Z].*")) {
                grade += 20;
                char1Flag = true;
            } else if (s.matches(".*[a-z].*") || s.matches(".*[A-Z].*")) {
                grade += 10;
                char2Flag = true;
            } 
            // System.out.println(grade);
            //3.数字
            if (s.matches(".*[0-9]{1,}.*[0-9]{1,}.*")) {
                grade += 20;
            } else if (s.matches(".*[0-9].*")) {
                grade += 10;
            } else {
                numFlag = false;
            }
            // System.out.println(grade);
            //4. 符号
            // !"#$%&'()*+,-./  (ASCII码:0x21~0x2F) 33~47
            // :;
            // <= > ? @          (ASCII码:0x3A~0x40) 58 ~ 64
            // [\] ^ _`          (ASCII码:0x5B~0x60) 91~96
            //{|}~               (ASCII码:0x7B~0x7E) 123~126
            int count = 0;
            for(int i = 0; i < arr.length; i++){
                int temp = arr[i];
                if(temp >= 33 && temp <= 47 
                ||temp >= 58 && temp <= 64 
                ||temp >= 91 && temp <= 96 
                ||temp >= 123 && temp <= 126 ){
                    count++;
                    if(count == 2){
                        break;
                    }
                }
            }
            if(count == 2){
                grade += 25;
            }else if(count == 1){
                grade += 10;
            }else{
                scharFlag = false;
            }
            // System.out.println(grade);
            //5.
            if(char1Flag && numFlag && scharFlag){
                grade += 5;
            }else if(char2Flag && numFlag && scharFlag){
                grade += 3;
            }else if(char2Flag && numFlag){
                grade += 2;
            }
            // System.out.println(grade);

            //这个结果集也可以使用map匹配
            if (grade >= 90) {
                System.out.println("VERY_SECURE");
            } else if (grade >= 80) {
                System.out.println("SECURE");
            } else if (grade >= 70) {
                System.out.println("VERY_STRONG");
            } else if (grade >= 60) {
                System.out.println("STRONG");
            } else if (grade >= 50) {
                System.out.println("AVERAGE");
            } else if (grade >= 25) {
                System.out.println("WEAK");
            } else if (grade >= 0) {
                System.out.println("VERY_WEAK");
            }
        }
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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