题解 | #密码强度等级#

密码强度等级

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

耐心把题目的逻辑分解成一块一块来写,最后一定可以作对!

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextLine()) { 
            String code = in.nextLine();
            System.out.println( get_code_security(code) );
        }
    }

    public static String get_code_security(String code){
        int grade = cal_code_grade(code);
        if(grade>=90){
            return "VERY_SECURE";
        }else if(grade>=80){
            return "SECURE";
        }else if(grade>=70){
            return "VERY_STRONG";
        }else if(grade>=60){
            return "STRONG";
        }else if(grade>=50){
            return "AVERAGE";
        }else if(grade>=25){
            return "WEAK";
        }else if(grade>=0){
            return "VERY_WEAK";
        }else{
            return "Not a legal code grade: "+grade;
        }
    }

    public static int cal_code_grade(String code){
        int result = code_len_grade(code) + alphabet_grade(code) 
            + digit_grade(code) + symbol_grade(code) + bonus_grade(code);
        return result;
    }

    public static int code_len_grade(String code){
        if(code.length()<=4){
            return 5;
        }else if(code.length()>=5 && code.length()<=7){
            return 10;
        }else{
            return 25;}
    }

    public static int alphabet_grade(String code){
        boolean has_uppercase = false;
        boolean has_lowercase = false;

        for(char c : code.toCharArray()){
            if(Character.isUpperCase(c)){
                has_uppercase = true;
            }
            if(Character.isLowerCase(c)){
                has_lowercase = true;
            }
        }

        if(!has_uppercase && !has_lowercase){
            return 0;
        }else if(has_uppercase && has_lowercase){
            return 20;
        }else{
            return 10;
        }
    }


    public static int digit_grade(String code){
        int counter = 0;
        for(char c : code.toCharArray()){
            if(Character.isDigit(c)){
                counter++;
            }
        }
        if(counter==0){
            return 0;
        }else if(counter==1){
            return 10;
        }else{
            return 20;
        }
    }

    public static int symbol_grade(String code){
        int counter = 0;
        for(char c: code.toCharArray()){
            if(is_symbol(c)){
                counter++;
            }
        }
        if(counter==0){
            return 0;
        }else if(counter==1){
            return 10;
        }else{
            return 25;
        }


    }

    public static boolean is_symbol(char c){
        if( (int)c>='!' && (int)c <= '/' ){
            return true;
        }else if( (int)c>=':' && (int)c <= '@' ){
            return true;
        }else if( (int)c>='[' && (int)c <= '`' ){
            return true;
        }else if( (int)c>='{' && (int)c <= '~' ){
            return true;
        }else{
            return false;
        }
    }


    public static int bonus_grade(String code){
        if( alphabet_grade(code)==10 && digit_grade(code)>=10 && symbol_grade(code)==0 ){
            return 2;
        }else if( alphabet_grade(code)==10 && digit_grade(code)>=10 && symbol_grade(code)>=10 ){
            return 3;
        }else if( alphabet_grade(code)==20 && digit_grade(code)>=10 && symbol_grade(code)>=10 ){
            return 5;
        }else{
            return 0;
        }
    }


}
全部评论

相关推荐

评论
5
3
分享

创作者周榜

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