题解 | #密码强度等级#
密码强度等级
http://www.nowcoder.com/practice/52d382c2a7164767bca2064c1c9d5361
耐心把题目的逻辑分解成一块一块来写,最后一定可以作对!
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextLine()) {
String code = in.nextLine();
System.out.println( get_code_security(code) );
}
}
public static String get_code_security(String code){
int grade = cal_code_grade(code);
if(grade>=90){
return "VERY_SECURE";
}else if(grade>=80){
return "SECURE";
}else if(grade>=70){
return "VERY_STRONG";
}else if(grade>=60){
return "STRONG";
}else if(grade>=50){
return "AVERAGE";
}else if(grade>=25){
return "WEAK";
}else if(grade>=0){
return "VERY_WEAK";
}else{
return "Not a legal code grade: "+grade;
}
}
public static int cal_code_grade(String code){
int result = code_len_grade(code) + alphabet_grade(code)
+ digit_grade(code) + symbol_grade(code) + bonus_grade(code);
return result;
}
public static int code_len_grade(String code){
if(code.length()<=4){
return 5;
}else if(code.length()>=5 && code.length()<=7){
return 10;
}else{
return 25;}
}
public static int alphabet_grade(String code){
boolean has_uppercase = false;
boolean has_lowercase = false;
for(char c : code.toCharArray()){
if(Character.isUpperCase(c)){
has_uppercase = true;
}
if(Character.isLowerCase(c)){
has_lowercase = true;
}
}
if(!has_uppercase && !has_lowercase){
return 0;
}else if(has_uppercase && has_lowercase){
return 20;
}else{
return 10;
}
}
public static int digit_grade(String code){
int counter = 0;
for(char c : code.toCharArray()){
if(Character.isDigit(c)){
counter++;
}
}
if(counter==0){
return 0;
}else if(counter==1){
return 10;
}else{
return 20;
}
}
public static int symbol_grade(String code){
int counter = 0;
for(char c: code.toCharArray()){
if(is_symbol(c)){
counter++;
}
}
if(counter==0){
return 0;
}else if(counter==1){
return 10;
}else{
return 25;
}
}
public static boolean is_symbol(char c){
if( (int)c>='!' && (int)c <= '/' ){
return true;
}else if( (int)c>=':' && (int)c <= '@' ){
return true;
}else if( (int)c>='[' && (int)c <= '`' ){
return true;
}else if( (int)c>='{' && (int)c <= '~' ){
return true;
}else{
return false;
}
}
public static int bonus_grade(String code){
if( alphabet_grade(code)==10 && digit_grade(code)>=10 && symbol_grade(code)==0 ){
return 2;
}else if( alphabet_grade(code)==10 && digit_grade(code)>=10 && symbol_grade(code)>=10 ){
return 3;
}else if( alphabet_grade(code)==20 && digit_grade(code)>=10 && symbol_grade(code)>=10 ){
return 5;
}else{
return 0;
}
}
} 
格力公司福利 345人发布