本文主要是介绍华为OJ——密码强度等级,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
密码按如下规则进行计分,并根据不同的得分为密码进行安全等级划分。
一、密码长度:
5 分: 小于等于4 个字符
10 分: 5 到7 字符
25 分: 大于等于8 个字符
二、字母:
0 分: 没有字母
10 分: 全都是小(大)写字母
20 分: 大小写混合字母
三、数字:
0 分: 没有数字
10 分: 1 个数字
20 分: 大于1 个数字
四、符号:
0 分: 没有符号
10 分: 1 个符号
25 分: 大于1 个符号
五、奖励:
2 分: 字母和数字
3 分: 字母、数字和符号
5 分: 大小写字母、数字和符号
最后的评分标准:
>= 90: 非常安全
>= 80: 安全(Secure)
>= 70: 非常强
>= 60: 强(Strong)
>= 50: 一般(Average)
>= 25: 弱(Weak)
>= 0: 非常弱
对应输出为:
VERY_WEAK,
WEAK,
AVERAGE,
STRONG,
VERY_STRONG,
SECURE,
VERY_SECURE
输入描述:
输入一个string的密码
输出描述:
输出密码等级
输入例子:
38$@NoNoNo
输出例子:
VERY_SECURE
import java.util.*;
public class Main{public static void main(String[] args) {Scanner scan=new Scanner(System.in);while(scan.hasNext()){String pwd=scan.nextLine();int total=Length(pwd)+Letter(pwd)+number(pwd)+sign(pwd)+reward(pwd);if(total>=90)System.out.println("VERY_SECURE");else if(total>=80)System.out.println("SECURE");else if(total>=70)System.out.println("VERY_STRONG");else if(total>=60)System.out.println("STRONG");else if(total>=50)System.out.println("AVERAGE");else if(total>=25)System.out.println("WEAK");elseSystem.out.println("VERY_WEAK");}}//判断长度static int Length(String str){int score=0;if(str.length()<=4){score+=5;}else if(str.length()>=8){score+=25;}else{score+=10;}return score;}//判断字母static int Letter(String str){int score=0;int xiao=0;int da=0;for(Character ch:str.toCharArray()){if(ch>='a' && ch<='z') xiao=1;else if(ch>='A' && ch<='Z') da=1;}if(xiao==1 && da==1) score=20;else if(xiao==0 && da==0) score=0;else score=10;return score;}//判断数字static int number(String str){int score=0;int count=0;for(Character ch:str.toCharArray()){if(ch>='0' && ch<='9') count++;}if(count==0) score=0;else if(count==1) score=10;else score=20;return score;}//判断符号static int sign(String str){int score=0;int count=0;for(Character ch:str.toCharArray()){if(!(ch>='0' && ch<='9') && !(ch.toLowerCase(ch)>='a' && ch.toLowerCase(ch)<='z')) count++;}if(count==0) score=0;else if(count==1) score=10;else score=25;return score;}//奖励static int reward(String str){int score=0;if(number(str)>0 && Letter(str)==20 && sign(str)>0)score=5;else if(number(str)>0 && Letter(str)>0 && sign(str)>0)score=3;else if(number(str)>0 && Letter(str)>0)score=2;return score;}
}
这篇关于华为OJ——密码强度等级的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!