HDOJ 2043 密码

简介: HDOJ 2043 密码

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");
            }
        }
    }
}
目录
相关文章
|
7月前
|
数据安全/隐私保护
登录中用于记住用户名和密码的方法
登录中用于记住用户名和密码的方法
65 0
|
9月前
|
安全 数据安全/隐私保护
如何安全的使用密码登录账号(在不知道密码的情况下)
该内容介绍了如何使用一个工具来便捷地复制和管理账号密码。首先提到了两个下载工具的链接,分别是百度网盘和蓝奏云,并给出了相应的提取码。接着,展示了工具的界面,说明通过按住Ctrl或Alt点击密码栏可以快速复制账号和密码,无需直接看到密码。用户可以通过模拟添加账号来体验这一功能,然后演示了如何生成和复制新密码。最后,重点强调了按住Ctrl复制账号和按住Alt复制对应密码的快捷操作,使得在不知密码的情况下也能轻松获取。
|
9月前
|
存储 安全 网络安全
如何取安全的密码?
如何取安全的密码?
93 0
|
9月前
|
存储 弹性计算 运维
循环测试用户名与密码是否正确
【4月更文挑战第29天】
51 0
|
9月前
|
存储 弹性计算 运维
测试用户名与密码是否正确
【4月更文挑战第29天】
56 0
|
数据安全/隐私保护 计算机视觉
QWE密码
QWE密码
390 0
|
Linux 数据安全/隐私保护
ADFGVX密码
ADFGVX密码
151 0
|
Linux 数据安全/隐私保护 知识图谱
ADFGX密码
ADFGX密码
270 0
|
机器学习/深度学习 Linux 数据安全/隐私保护
维吉尼亚密码(Vigenere)
维吉尼亚密码(Vigenere)
223 0
|
Linux 数据安全/隐私保护
普莱费尔密码(playfair)
普莱费尔密码(playfair)
307 0