题解 | #密码强度等级#
密码强度等级
https://www.nowcoder.com/practice/52d382c2a7164767bca2064c1c9d5361
import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 String pwd = in.nextLine(); int len = len(pwd); int word = word(pwd); int digital= digital(pwd); int letter = letter(pwd); int sum = 0; if(word > 0 && digital > 0 && letter == 0){ sum = len + word +digital + letter + 2; }else if(word > 0 && word < 20 && digital > 0 && letter > 0){ sum = len + word +digital + letter + 3; }else if(word > 0 && word == 20 && digital > 0 && letter > 0){ sum = len + word +digital + letter + 5; }else{ sum = len + word +digital + letter; } // System.out.println("len:" + len); // System.out.println("word:" + word); // System.out.println("digital:" + digital); // System.out.println("letter:" + letter); // System.out.println("sum:" + sum); if(sum >= 90){ System.out.println("VERY_SECURE"); }else if(sum >= 80){ System.out.println("SECURE"); }else if(sum >= 70){ System.out.println("VERY_STRONG"); }else if(sum >= 60){ System.out.println("STRONG"); }else if(sum >= 50){ System.out.println("AVERAGE"); }else if(sum >= 25){ System.out.println("WEAK"); }else if(sum >= 0){ System.out.println("VERY_WEAK"); }else{ System.out.println("VERY_WEAK"); } } /** *计算长度分数 */ public static int len(String s){ if(s.length() <= 4){ return 5; }else if(s.length() >= 5 && s.length() <= 7){ return 10; }else{ return 25; } } /** *计算大小写字母分数 */ public static int word(String s){ char[] ch = s.toCharArray(); int low = 0; int up = 0; int other = 0; for(int i = 0;i < ch.length;i++){ if(ch[i] >= 'a' && ch[i] <= 'z'){ low++; }else if(ch[i] >= 'A' && ch[i] <= 'Z'){ up++; }else{ other++; } } if(low > 0 && up > 0){ return 20; }else if(low == 0 && up == 0){ return 0; }else if(low > 0 && up == 0){ return 10; }else if(low == 0 && up > 0){ return 10; }else{ return 0; } } /** *计算数字分数 */ public static int digital(String s){ char[] ch = s.toCharArray(); int num = 0; int up = 0; int other = 0; for(int i = 0;i < ch.length;i++){ if(ch[i] >= '0' && ch[i] <= '9'){ num++; }else{ other++; } } if(num == 0){ return 0; }else if(num == 1){ return 10; }else{ return 20; } } /** *计算字符分数 */ public static int letter(String s){ char[] ch = s.toCharArray(); int num = 0; for(int i = 0;i < ch.length;i++){ boolean flag = ch[i] < '0' || ch[i] > '9'; boolean flag1 = ch[i] < 'a' || ch[i] > 'z'; boolean flag2 = ch[i] < 'A' || ch[i] > 'Z'; if(flag && flag1 && flag2){ num++; } } if(num == 0){ return 0; }else if(num == 1){ return 10; }else{ return 25; } } }