华为OJ训练之0034-170112-密码强度等级
2017-05-12 15:17
337 查看
题目
密码按如下规则进行计分,并根据不同的得分为密码进行安全等级划分。一、密码长度:
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
请根据输入的密码字符串,进行安全评定。 注: 字母:a-z, A-Z 数字:-9 符号包含如下: (ASCII码表可以在UltraEdit的菜单view->ASCII Table查看) !"#$%&'()*+,-./ (ASCII码:x21~0x2F) :;<=>?@ (ASCII<=><=><=><=><=>码:x3A~0x40) [\]^_` (ASCII码:x5B~0x60)
{|}~ (ASCII码:x7B~0x7E)
接口描述:
Input Param
String pPasswordStr: 密码,以字符串方式存放。
Return Value
根据规则评定的安全等级。
public static Safelevel GetPwdSecurityLevel(String pPasswordStr)
{
/在这里实现功能/
return null;
}
知识点 枚举
运行时间限制 10M
内存限制 128
输入
输入一个string的密码
输出
输出密码等级
样例输入 38$@NoNoNo
样例输出 VERY_SECURE
============================================================
三次答案错误
完全不理解哪错了
============================================================
package package02; import java.util.Scanner; //密码按如下规则进行计分,并根据不同的得分为密码进行安全等级划分。 //一、密码长度: //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 // // //请根据输入的密码字符串,进行安全评定。 //注: //字母:a-z, A-Z //数字:-9 //符号包含如下: (ASCII码表可以在UltraEdit的菜单view->ASCII Table查看) //!"#$%&'()*+,-./ (ASCII码:x21~0x2F) //:;<=>?@ (ASCII<=><=><=><=><=>码:x3A~0x40) //[\]^_` (ASCII码:x5B~0x60) //{|}~ (ASCII码:x7B~0x7E) //接口描述: // //Input Param //String pPasswordStr: 密码,以字符串方式存放。 //Return Value //根据规则评定的安全等级。 // // //public static Safelevel GetPwdSecurityLevel(String pPasswordStr) //{ ///*在这里实现功能*/ //return null; //} // // // //知识点 枚举 //运行时间限制 10M //内存限制 128 //输入 //输入一个string的密码 //输出 //输出密码等级 //样例输入 38$@NoNoNo //样例输出 VERY_SECURE public class oj034 { public int getPassWordScore(String password) { int score=0; // 一、密码长度: // 5 分: 小于等于4 个字符 // 10 分: 5 到7 字符 // 25 分: 大于等于8 个字符 int length=password.length(); if(length<=4){score+=5;} if(length>=5&&length<=7){score+=10;} if(length>=8){score+=25;} int word=0; int WORD=0; int number=0; int sign=0; for(int i=0;i<length;i++) { char c=password.charAt(i); if('a'<=c&&c<='z'){word++;} else if('A'<=c&&c<='Z'){WORD++;} else if('0'<=c&&c<='9'){number++;} else {sign++;} } // 二、字母: // 0 分: 没有字母 if(word==0&&WORD==0) {score+=0;} // 10 分: 全都是小(大)写字母 else if(word==0||WORD==0) {score+=10;} // 20 分: 大小写混合字母 else if(word!=0&&WORD!=0) {score+=20;} // 三、数字: // 0 分: 没有数字 if(number==0) {score+=0;} // 10 分: 1 个数字 if(number==1) {score+=10;} // 20 分: 大于1 个数字 if(number>1) {score+=20;} // 四、符号: // 0 分: 没有符号 if(number==0) {score+=0;} // 10 分: 1 个符号 if(number==1) {score+=10;} // 25 分: 大于1 个符号 if(number>1) {score+=25;} // 五、奖励: // 5 分: 大小写字母、数字和符号 if(number!=0&&sign!=0&&word!=0&&WORD!=0){score+=5;} // 3 分: 字母、数字和符号 else if((word+WORD)!=0&&number!=0&&sign!=0){score+=3;} // 2 分: 字母和数字 else if((word+WORD)!=0&&number!=0){score+=2;} return score; } public static void main(String[] args) { Scanner scanner=new Scanner(System.in); String password=scanner.nextLine(); oj034 oj=new oj034(); int score=oj.getPassWordScore(password); // >= 90: 非常安全 // >= 80: 安全(Secure) // >= 70: 非常强 // >= 60: 强(Strong) // >= 50: 一般(Average) // >= 25: 弱(Weak) // >= 0: 非常弱 // // 对应输出为: // VERY_WEAK, // WEAK, // AVERAGE, // STRONG, // VERY_STRONG, // SECURE, // VERY_SECURE if(score>=90) { System.out.print("VERY_SECURE"); } else if(score>=80) { System.out.print("SECURE"); } else if(score>=70) { System.out.print("VERY_STRONG"); } else if(score>=60) { System.out.print("STRONG"); } else if(score>=50) { System.out.print("AVERAGE"); } else if(score>=25) { System.out.print("WEAK"); } else { System.out.print("VERY_WEAK"); } } }
相关文章推荐
- 华为oj 密码强度等级
- 华为OJ-密码强度等级
- 华为OJ——密码强度等级
- 【华为OJ】【086-密码强度等级】
- 华为OJ——密码强度等级
- 【华为OJ】密码强度等级
- 华为oj初级 密码强度等级
- 华为OJ 初级:密码强度等级
- 【华为oj】密码强度等级
- 华为OJ——密码强度等级
- 华为OJ平台——密码强度等级
- 华为oj 密码强度等级
- 【华为 OJ 】密码强度等级
- 华为OJ(密码强度等级)
- OJ-----密码强度等级
- 华为OJ训练之0035-170112-字符串加解密
- 华为OJ训练之0036-170112-素数伴侣
- 华为机试:密码强度等级、百钱买百鸡问题
- 华为OJ训练之0043-170220-蛇形矩阵
- 华为OJ中级题-密码验证合格程序