static void solve() throws NumberFormatException, IOException { String p = next(); long sc = 0; int len = p.length(); if (len <= 4) sc += 5; else if (len <= 7) sc += 10; else sc += 25; boolean lwr = p.matches(".*[a-z].*"); boolean upr = p.matches(".*[A-Z].*"); int ls = 0; if (lwr || upr) ls = (lwr && upr) ? 20 : 10; sc += ls; int dc = p.replaceAll("[^0-9]", "").length(); if (dc == 1) sc += 10; else if (dc > 1) sc += 20; int sym = p.replaceAll("[^!-/:-@\\[-`{-~]", "").length(); if (sym == 1) sc += 10; else if (sym > 1) sc += 25; int rw = 0; boolean let = lwr || upr; boolean dig = dc > 0; boolean symF = sym > 0; if (lwr && upr && dig && symF) rw = 5; else if (let && dig && symF) rw = 3; else if (let && dig) rw = 2; sc += rw; String res; if (sc >= 90) res = "VERY_SECURE"; else if (sc >= 80) res = "SECURE"; else if (sc >= 70) res = "VERY_STRONG"; else if (sc >= 60) res = "STRONG"; else if (sc >= 50) res = "AVERAGE"; else if (sc >= 25) res = "WEAK"; else res = "VERY_WEAK"; println(res); }
读题我们发现这就是很长但是很简单的暴力判断,所以我们选择用java的正则表达式这个对于字符串的匹配用起来很方便的方法
#牛客春招刷题训练营#https://www.nowcoder.com/creation/subject/d90225fecf404712be5150c470bffc45#牛客春招刷题训练营#