题解 | #密码强度等级#
密码强度等级
https://www.nowcoder.com/practice/52d382c2a7164767bca2064c1c9d5361
import java.util.Scanner; import java.util.regex.Pattern; import java.util.regex.Matcher; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String pwdV = sc.nextLine(); //1、密码长度: int pwdLenPoint = 10; if (pwdV.length() >= 8) { pwdLenPoint = 25; } else if (pwdV.length() <= 4) { pwdLenPoint = 5; } //2、密码是否包含字母 int pwdAaPoint = 0; if (containsZ("a-z", pwdV) || containsZ("A-Z", pwdV)) { pwdAaPoint = 10; if (containsZ("a-z", pwdV) && containsZ("A-Z", pwdV)) { pwdAaPoint = 20; } } //3、数字个数 int pwdDigitPoint =containDigitCnt(pwdV) > 1?20:(containDigitCnt(pwdV) == 1?10:0) ; //4、符号个数 int signCnt=containSignCnt(pwdV); int pwdSignPoint = signCnt>1?25:(signCnt==1?10:0); //5、奖励 int pwdAwardPoint = 0; if (pwdSignPoint > 0 & pwdDigitPoint > 0 ) { pwdAwardPoint = pwdAaPoint == 10 ? 3 : (pwdAaPoint == 20 ? 5 : 0); } else { pwdAwardPoint = pwdDigitPoint > 0 & pwdAaPoint > 0 ? 2 : 0; } int totalPoint = pwdAwardPoint + pwdDigitPoint + pwdSignPoint + pwdAaPoint + pwdLenPoint; String rs = "VERY_WEAK"; if (totalPoint >= 90) { rs = "VERY_SECURE"; } else if (totalPoint >= 80) { rs = "SECURE"; } else if (totalPoint >= 70) { rs = "VERY_STRONG"; } else if (totalPoint >= 60) { rs = "STRONG"; } else if (totalPoint >= 50) { rs = "AVERAGE"; } else if (totalPoint >= 25) { rs = "WEAK"; } System.out.print(rs); } /*求字符个数,排除掉字符串里字母和数字个数,剩余为符号个数*/ static int containSignCnt(String str) { char[] charArr = str.toCharArray(); int count = 0; for (Character c : str.toCharArray()) { count = Character.isLetterOrDigit(c) ? ++count : count; } int signCnt=str.length()-count; return signCnt>0?signCnt:0; } //求数字个数 static int containDigitCnt(String str) { char[] charArr = str.toCharArray(); int count = 0; for (Character c : str.toCharArray()) { count = Character.isDigit(c) ? ++count : count; } return count; } //是否含有字母 static boolean containsZ(String pattern, String str) { Pattern p = Pattern.compile("[" + pattern + "]"); Matcher matcher = p.matcher(str); return matcher.find(); } }