描述 | |
---|---|
知识点 | 枚举 |
运行时间限制 | 10M |
内存限制 | 128 |
输入 | 输入一个string的密码 |
输出 | 输出密码等级 |
样例输入 | 38$@NoNoNo |
样例输出 | VERY_SECURE |
/*分为五个部分,分别计算每部分的得分,最后加起来
* 使用正则表达式判断
* */
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String input = sc.next().trim();
sc.close();
int lengthScore = lengthScore(input);
int charScore = charScore(input);
int numScore = numScore(input);
int fuhaoScore = fuhaoScore(input);
int awardScore = awardScore(input);
int sum = lengthScore + charScore+numScore+fuhaoScore+awardScore;
String output = null;
if(sum >= 0)
output = "VERY_WEAK";
if(sum >= 25)
output = "WEAK";
if(sum >= 50)
output = "AVERAGE";
if(sum >= 60)
output = "STRONG";
if(sum >= 70)
output = "VERY_STRONG";
if(sum >= 80)
output = "SECURE";
if(sum >= 90)
output = "VERY_SECURE ";
System.out.println(output);
}
private static int lengthScore(String input) {
int score = 0;
if (input.length() >= 8)
score = 25;
else if (input.length() <= 4)
score = 5;
else
score = 10;
return score;
}
private static int charScore(String input) {
int score = 0;
Pattern pattern = Pattern.compile("[a-zA-Z]");
Matcher matcher;
int flag = 0;
String[] string = input.trim().split("");
for (int i = 0; i < string.length; i++) {
matcher = pattern.matcher(string[i]);
if (matcher.matches())
flag++;
}
if (flag != 0) {
if (input.toLowerCase().equals(input))
score = 10;
else
score = 20;
} else
score = 0;
return score;
}
private static int numScore(String input) {
int score = 0;
Pattern pattern = Pattern.compile("[0-9]");
Matcher matcher;
int flag = 0;
String[] string = input.trim().split("");
for (int i = 0; i < string.length; i++) {
matcher = pattern.matcher(string[i]);
if (matcher.matches())
flag++;
}
if (flag != 0) {
if (flag > 1)
score = 20;
else
score = 10;
} else
score = 0;
return score;
}
private static int fuhaoScore(String input) {
int score = 0;
Pattern pattern = Pattern
.compile(".*[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#&*()&;—|{}‘;:”“'。,、?].*");
Matcher matcher;
int flag = 0;
String[] string = input.trim().split("");
for (int i = 0; i < string.length; i++) {
matcher = pattern.matcher(string[i]);
if (matcher.matches())
flag++;
}
if (flag != 0) {
if (flag > 1)
score = 25;
else
score = 10;
} else
score = 0;
return score;
}
private static int awardScore(String input) {
int score = 0;
if(numScore(input) > 0 && charScore(input) > 0){
score = 2;
if(fuhaoScore(input) > 0){
score = 3;
if(charScore(input) == 20)
score = 5;
}
}
return score;
}
}