(1).密码长度大于等于8,且不要超过16。
(2).密码中的字符应该来自下面“字符类别”中四组中的至少三组。
这四个字符类别分别为:
1.大写字母:A,B,C...Z;
2.小写字母:a,b,c...z;
3.数字:0,1,2...9;
4.特殊符号:~,!,@,#,$,%,^;
给你一个密码,你的任务就是判断它是不是一个安全的密码。
(2).密码中的字符应该来自下面“字符类别”中四组中的至少三组。
这四个字符类别分别为:
1.大写字母:A,B,C...Z;
2.小写字母:a,b,c...z;
3.数字:0,1,2...9;
4.特殊符号:~,!,@,#,$,%,^;
给你一个密码,你的任务就是判断它是不是一个安全的密码。
Input
输入数据第一行包含一个数M,接下有M行,每行一个密码(长度最大可能为50),密码仅包括上面的四类字符。
Output
对于每个测试实例,判断这个密码是不是一个安全的密码,是的话输出YES,否则输出NO。
这题就是判断字符串是不是规定的字符串。循环判断。我自己的想法是卫条件来写函数,先判断长度,在判断字符是否有包含某个字符类别,包含那么相应标志赋值为1,循环完成。判断四个标志的值是否大于2 或者 大于等于3,如果成立 就返回true,否则false。
使用Java语言写的。
下面是我的代码:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(sc.hasNext()){ int m = sc.nextInt(); boolean isOK; for(int i=0;i<m;i++){ String s = sc.next(); isOK = check(s); if(isOK){ System.out.println("YES"); }else{ System.out.println("NO"); } } } } private static boolean check(String s) { if(s.length()<8||s.length()>16){ return false; } int a=0,b=0,c=0,d=0; for(int i=0;i<s.length();i++){ if(s.charAt(i)>='0'&&s.charAt(i)<='9'){ a=1; } if(s.charAt(i)>='a'&&s.charAt(i)<='z'){ b=1; } if(s.charAt(i)>='A'&&s.charAt(i)<='Z'){ c=1; }//,!,@,#,$,%,^; if(s.charAt(i)=='~'||s.charAt(i)=='!'||s.charAt(i)=='@'||s.charAt(i)=='$'||s.charAt(i)=='%'||s.charAt(i)=='^'){ d=1; } } if(a+b+c+d>2){ return true; } return false; } }