题解 | #密码强度等级#
密码强度等级
https://www.nowcoder.com/practice/52d382c2a7164767bca2064c1c9d5361
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
String s = sc.nextLine();
char[] chars = s.toCharArray();
int m1 = evaluateLen(chars);
int m2 = evaluateChar(chars);
int m3 = evaluateNum(chars);
int m4 = evaluateSign(chars);
int m5 = getBonus(m2,m3,m4);
getStrength(m1,m2,m3,m4,m5);
}
}
public static int evaluateLen(char[] chars) {
int marks = 0;
int len = chars.length;
if (len<=4){
marks = 5;
}
if ((len>=5)&&(len<=7)){
marks = 10;
}
if (len>=8){
marks = 25;
}
return marks;
}
public static int evaluateChar(char[] chars) {
int marks = 0;
int countCap = 0;
int countLow = 0;
// while(marks<20){
for (char aChar : chars) {
if (marks>20){
break;
}
if ((aChar >= 'A') && (aChar <= 'Z')&&countCap!=1) {
marks += 10;
countCap++;
}
if ((aChar >= 'a') && (aChar <= 'z')&&countLow!=1) {
marks += 10;
countLow++;
}
}
// }
return marks;
}
public static int evaluateNum(char[] chars) {
int marks = 0;
// while(marks<20){
for (char aChar : chars) {
if(marks>20){
break;
}
if ((aChar >= '0') && (aChar <= '9')) {
marks += 10;
}
}
// break;
// }
return marks;
}
public static int evaluateSign(char[] chars) {
int marks = 0;
// while(marks<25){
for (char aChar : chars) {
if (marks>=25){
break;
}
if (marks==10){
if ((aChar >= 32) && (aChar <= 47) || (aChar >= 58) && (aChar <= 64) || (aChar >= 91) && (aChar <= 96)||(aChar >= 123) && (aChar <= 126) ) {
marks += 15;
}
}
if (marks==0){
if ((aChar >= 32) && (aChar <= 47) || (aChar >= 58) && (aChar <= 64) || (aChar >= 91) && (aChar <= 96)||(aChar >= 123) && (aChar <= 126) ) {
marks += 10;
}
}
}
return marks;
}
public static int getBonus(int n1,int n2,int n3) {
int bonus = 0;
if(n1>=10&&n2>=10){
bonus = 2;
}
if (n1>=10&&n2>=10&&n3>=10){
bonus = 3;
}
if (n1==20&&n1>=10&&n3>=10){
bonus = 5;
}
return bonus;
}
public static void getStrength(int m1,int m2,int m3,int m4,int m5) {
int sum = m1+m2+m3+m4+m5;
if(sum>=90){
System.out.println("VERY_SECURE");
}
if((sum>=80)&&(sum<90)){
System.out.println("SECURE");
}
if((sum>=70)&&(sum<80)){
System.out.println("VERY_STRONG");
}
if((sum>60)&&(sum<70)){
System.out.println("STRONG");
}
if((sum>=50)&&(sum<=60)){
System.out.println("AVERAGE");
}
if((sum>=25)&&(sum<50)){
System.out.println("WEAK");
}
if((sum>=0)&&(sum<25)){
System.out.println("VERY_WEAK");
}
}
}
//最后一个用例有问题,只能改代码适应用例