HDOJ 2043 密码

简介: Problem Description网上流传一句话:”常在网上飘啊,哪能不挨刀啊~”。其实要想能安安心心地上网其实也不难,学点安全知识就可以。首先,我们就要设置一个安全的密码。

Problem Description

网上流传一句话:”常在网上飘啊,哪能不挨刀啊~”。其实要想能安安心心地上网其实也不难,学点安全知识就可以。

首先,我们就要设置一个安全的密码。那什么样的密码才叫安全的呢?一般来说一个比较安全的密码至少应该满足下面两个条件:

(1).密码长度大于等于8,且不要超过16。
(2).密码中的字符应该来自下面“字符类别”中四组中的至少三组。

这四个字符类别分别为:
1.大写字母:A,B,C…Z;
2.小写字母:a,b,c…z;
3.数字:0,1,2…9;
4.特殊符号:~,!,@,#,$,%,^;

给你一个密码,你的任务就是判断它是不是一个安全的密码。

Input
输入数据第一行包含一个数M,接下有M行,每行一个密码(长度最大可能为50),密码仅包括上面的四类字符。

Output
对于每个测试实例,判断这个密码是不是一个安全的密码,是的话输出YES,否则输出NO。

Sample Input
3
a1b2c3d4
Linle@ACM
^~^@^@!%

Sample Output
NO
YES
NO

import java.util.Scanner;

public class Main{

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        char strNames[] = { '~','!', '@', '#','$','%','^'};
        int n = sc.nextInt();

        //sc.nextLine();

        while (n-->0) {

            String strs = sc.next();
            int[] times = new int[4];

            if(!(strs.length()>=8&&strs.length()<=16)){
                System.out.println("NO");
                continue;
            }
            //注意这个密码的长度,我就被坑了!!!!

//            System.out.println("strs="+strs);


            for (int i = 0; i < strs.length(); i++) {
                if ('A' <= strs.charAt(i) && strs.charAt(i) <= 'Z') {
                    times[0] = 1;continue;
                }else
                if ('a' <= strs.charAt(i) && strs.charAt(i) <= 'z') {
                    times[1] = 1;continue;
                }else
                if ('0' <= strs.charAt(i) && strs.charAt(i) <= '9') {
                    times[2] = 1;continue;
                }else
                for (int j = 0; j < strNames.length; j++) {
                    if (strs.charAt(i) ==strNames[j]) {
                        times[3] = 1;
                    }
                }
            }

            int m=0;
            for(int i=0;i<times.length;i++){
                m+=times[i];
            }


            if(m>=3){
                System.out.println("YES");
            }else{
                System.out.println("NO");
            }


        }

    }

}
目录
相关文章
|
12月前
|
Java C++
hdoj 1715 大菲波数
先java代码
46 1
|
安全 数据安全/隐私保护
HDOJ 2043 密码
HDOJ 2043 密码
72 0
HDOJ 1418 抱歉(欧拉公式)
HDOJ 1418 抱歉(欧拉公式)
156 0
HDOJ 2034 人见人爱A-B
HDOJ 2034 人见人爱A-B
125 0
HDOJ 2004 成绩转换
HDOJ 2004 成绩转换
88 0
HDOJ 2013 蟠桃记
HDOJ 2013 蟠桃记
93 0
|
网络协议 机器学习/深度学习
HDOJ 1214 圆桌会议
Problem Description HDU ACM集训队的队员在暑假集训时经常要讨论自己在做题中遇到的问题.每当面临自己解决不了的问题时,他们就会围坐在一张圆形的桌子旁进行交流,经过大家的讨论后一般没有解决不了的问题,这也只有HDU ACM集训队特有的圆桌会议,有一天你也...
838 0
HDOJ 2050 折线分割平面
Problem Description 我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目。比如,一条折线可以将平面分成两部分,两条折线最多可以将平面分成7部分,具体如下所示。
992 0