华为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

请根据输入的密码字符串,进行安全评定。

注:

字母:a-z, A-Z

数字:-9

符号包含如下: (ASCII码表可以在UltraEdit的菜单view->ASCII Table查看)

!"#$%&‘()*+,-./     (ASCII码:x21~0x2F)

:;<=>[email protected]             (ASCII<=><=><=><=><=>码:x3A~0x40)

[\]^_`              (ASCII码:x5B~0x60)

   {|}~                (ASCII码:x7B~0x7E)

输入:

  输入一个string的密码(eg:[email protected])

输出:

  输出密码等级(eg:VERY_SECURE)

时间: 2024-10-05 06:16:29

华为OJ平台——密码强度等级的相关文章

华为OJ平台——字符串分隔

题目描述: 连续输入字符串,请按长度为8拆分每个字符创 后输出到新的字符串数组: 长度不是8整数倍的字符串请在后面补数字0,空字符串不处理 输入 连续输入字符串(输入两次,每个字符长长度小于100)输出 输出到长度为8,的新字符串数组样例输入 abc 123456789样例输出 abc00000 12345678 90000000 思路: 都是直接处理,没有具体的方法而言 注意点: 华为的OJ平台的输入输出有点坑,好多次的程序都在这里出问题,在Eclipse上运行的结果没问题,然后在OJ上就是编

华为OJ平台——矩阵乘法

题目描述: 如果A是个x行y列的矩阵,B是个y行z列的矩阵,把A和B相乘,其结果将是另一个x行z列的矩阵C. 输入: 1.第一个矩阵的行数 2.第一个矩阵的列数(也是第二个矩阵的行数) 3.第二个矩阵的列数 4.第一个矩阵的值 5.第二个矩阵的值 输出: 输出两个矩阵相乘的结果 样例输入 2 2 2 3 8 8 0 9 0 18 9 样例输出 171 72 72 0 思路: 题目意思很简单,只是实现两个矩阵乘法功能,要注意的一点是输出的格式. OJ平台中对输出的格式非常严格,经过多次尝试,验证此

华为oj之密码验证合格程序

密码要求: 1.长度超过8位 2.包括大小写字母.数字.其它符号,以上四种至少三种 3.不能有相同长度超2的子串重复 判断字符类型时采用位标记,判断重复子串时使用动态规划 import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); while(sc.hasNext()) { String pwd=sc.nextLine

华为OJ平台试题 —— 数组:字符串反转

字符串反转 代码: /* * 接受一个字符串,然后输出该字符串反转后的字符串. */ #include <stdio.h> #include <string.h> /* * 字符串反转函数 */ char *revstr(char *str, int len) { char *start = str; char *end = str + len - 1; char ch; if (str != NULL) { while (start < end) { ch = *start

华为OJ平台——查找组成一个偶数最接近的两个素数

1 import java.util.Scanner; 2 3 /** 4 * 问题描述:任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况, 5 * 本题目要求输出组成指定偶数的两个素数差值最小的素数对,其中 5 < n <= 10000 6 * eg:输入20,输出7 13 7 */ 8 public class PrimePair { 9 10 public static void main(String[] args) { 11 Scanner cin = ne

华为OJ平台——百钱买百鸡问题

题目描述: 元前五世纪,我国古代数学家张丘建在<算经>一书中提出了“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一. 百钱买百鸡,问鸡翁.鸡母.鸡雏各几何? 思路: 这道题很简单,假设鸡翁 i 只, 鸡母 j 只, 则有 i + j + k = 100 5*i + 3*j + k/3 = 100 由以上两个等式我们可以推出: j = 25 - i * 7/4 ; k = 75 + i * 3/4 ; 由于i. j. k 必须是0或正整数,所以 i 必须是4的倍数,因此我们下面的程序中也是

华为OJ平台——字符串通配符

题目描述: 在计算机中,通配符一种特殊语法,广泛应用于文件搜索.数据库.正则表达式等领域.现要求各位实现字符串通配符的算法.要求:实现如下2个通配符: *:匹配0个或以上的字符(字符由英文字母和数字0-9组成,不区分大小写.下同)(不包含. , 等特殊字符) ?:匹配1个字符 输入 通配符表达式: 一组字符串. 输出 返回匹配的结果,正确输出true,错误输出false 思路: 分三种情况: (1)无通配符的情况:对应的字符要完全相等,否则匹配失败,输出false (2)通配符为?的情况:对应的

华为OJ平台——超长正整数相加

题目描述: 请设计一个算法完成两个超长正整数的加法. 输入 输入两个字符串数字 输出 输出相加后的结果,string型 样例输入 99999999999999999999999999999999999999999999999999 1 样例输出 100000000000000000000000000000000000000000000000000 思路: 在Java中,这样的大数运算可以直接用BigInteger类中的方法来进行运算和处理,那样本题没有任何意义了 因此在本方法中,不直接采用该类中

华为OJ平台——求最大连续bit数

题目描述: 求一个byte数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1 输入: 一个byte型的数字    输出: 对应的二进制数字中1的最大连续数 思路: 通过移位运算可以一次判断每一位的0.1值,然后通过统计可以得到结果 import java.util.Scanner; //byte 的范围是-128~127 public class MaxContinueOne { public static void main(String[] args) {