1053: 【密码】

来源:互联网 发布:虚拟物品淘宝介入 编辑:程序博客网 时间:2024/06/11 03:09

题目

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 cn = new Scanner(System.in);        int M = cn.nextInt();        while(M-->=0){            String str = cn.nextLine();            int numberCount = getCountNumber(str);            int charLowerCount = getCountLower(str);            int charUpperCount = getCountUpper(str);            int charSpecialCount = getCountSpecial(str);            //用if筛选出满足条件的密码            if(str.length()>=8&&str.length()<=16){                if((numberCount==0&&charLowerCount>0&&charUpperCount>0&&charSpecialCount>0)||                        (numberCount>0&&charLowerCount==0&&charUpperCount>0&&charSpecialCount>0)||                        (numberCount>0&&charLowerCount>0&&charUpperCount==0&&charSpecialCount>0)||                        (numberCount>0&&charLowerCount>0&&charUpperCount>0&&charSpecialCount==0)){                    System.out.println("YES");                }else{                    System.out.println("NO");                }            }        }    } //判断是否有特殊符号的并计数返回值    private static int getCountSpecial(String str) {        int count =0;        for(int i=0;i<str.length();i++){            if(str.charAt(i)=='~'||str.charAt(i)=='!'||str.charAt(i)=='@'||str.charAt(i)=='#'||str.charAt(i)=='$'||str.charAt(i)=='%'||str.charAt(i)=='^'){                count++;            }        }        return count;    } //判断是否拥有大写字母的并计数返回值    private static int getCountUpper(String str) {        int count =0;        for(int i=0;i<str.length();i++){            if(Character.isUpperCase(str.charAt(i))){                count++;            }        }        return count;    } //判断是否有小写字母的并计数返回值    private static int getCountLower(String str) {        int count =0;        for(int i =0;i<str.length();i++){            if(Character.isLowerCase(str.charAt(i))){                count++;            }        }        return count;    } //判断是否有数字的并计数返回值    private static int getCountNumber(String str) {        int count=0;        for(int i = 0;i<str.length();i++){            if(Character.isDigit(str.charAt(i))){                count++;            }        }        return count;    }}
0 0
原创粉丝点击