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
- 1053: 【密码】
- 密码
- 密码
- 密码
- 密码
- 密码
- 密码
- 密码
- 密码
- 密码
- 密码
- 密码
- 密码
- 密码
- 【密码】
- 密码
- 密码
- 密码
- CSS实现背景图片固定滚动形成视觉差效果
- java开发环境
- 结构体 成绩统计
- 树的镜面映射
- 水池数目,南阳 27题 深搜广搜都可以。
- 1053: 【密码】
- Linux (x86) Exploit 开发系列教程之十一 Off-By-One 漏洞(基于堆)
- .Net分布式架构(一):Nginx实现负载均衡
- 共享单车算不算共享经济
- IntelliJ IDEA maven库下载依赖包速度慢的问题
- 例题4-2刽子手游戏
- 重置按钮事件
- linux0.11内存管理之page.s文件
- 常用的正则表达式整理