题解 | #密码强度等级#

密码强度等级

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

主要问题在于如何判断数字、字母、字符及其个数:

1.灵活运用正则表达式;

2.使用Character方法,对字符串中的每个字符进行判断,并累计个数;

import java.util.*;
import java.util.regex.*;
//方法:
//1.灵活运用正则表达式;
//2.使用Character.isDigit()/isLetter()/isUpperCase()/isLowerCase()

public class Main{
    public static void main(String[] args){
        Scanner scan=new Scanner(System.in);
        String input = scan.nextLine();

        int grade=0;

        //密码长度
        if(input.length()<=4){
            grade+=5;
        }else if(input.length()<=7){
            grade+=10;
        }else{
            grade+=25;
        }

        //字母
        boolean hasLetter=true;
        boolean hasUpper=Pattern.compile("[A-Z]").matcher(input).find();
        boolean hasLower=Pattern.compile("[a-z]").matcher(input).find();
        boolean isAllUpper=hasUpper&&!hasLower;
        boolean isAllLower=!hasUpper&&hasLower;
        if(!hasUpper&&!hasLower){
            grade+=0;
            hasLetter=false;
        }else if(isAllUpper||isAllLower){
            grade+=10;
        }else{
            grade+=20;
        }

        //数字
        boolean hasDigit=true;
        String str1=input.replaceAll("[^0-9]","");//将数字外其他字符删去
        if(str1.length()==0){
            grade+=0;
            hasDigit=false;
        }else if(str1.length()==1){
            grade+=10;
        }else{
            grade+=20;
        }

        //符号
        boolean hasSymbol=true;
        String str2=input.replaceAll("[0-9a-zA-Z\\s]","");//将数字、字母、空格删去,仅剩余字符
        if(str2.length()==0){
            grade+=0;
            hasSymbol=false;
        }else if(str2.length()==1){
            grade+=10;
        }else {
            grade+=25;
        }

        //奖励
        if(hasLetter&&hasDigit&&!hasSymbol){
            grade+=2;
        }else if((isAllUpper||isAllLower)&&hasDigit&&hasSymbol){
            grade+=3;
        }else if((hasUpper&&hasLower)&&hasDigit&&hasSymbol){
            grade+=5;
        }

        //输出
        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{
            System.out.println("VERY_WEAK");
        }
    }
}
全部评论

相关推荐

2025-11-10 16:28
门头沟学院 测试开发
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

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