密码验证合格程序(算法)
2023-02-18 16:29:05 时间
/**
* 021Abc9Abc1
* 1.长度超过8位
* 2.包括大小写字母.数字.其它符号,以上四种至少三种
* 3.不能有长度大于2的包含公共元素的子串重复 (注:其他符号不含空格或换行)
*/
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
validation(str);
}
private static void validation(String str) {
// 1.长度超过8位
if (str.length() <= 8) {
System.out.println("不合格");
return;
}
// 2.包括大小写字母.数字.其它符号,以上四种至少三种
int little = 0;
int max = 0;
int num = 0;
int other = 0;
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) <= 'z' && str.charAt(i) >= 'a') {
little = 1;
} else if (str.charAt(i) <= 'Z' && str.charAt(i) >= 'A') {
max = 1;
} else if (str.charAt(i) <= '9' && str.charAt(i) >= '0') {
num = 1;
} else {
other = 1;
}
}
if (little + max + num + other < 3) {
System.out.println("不合格");
return;
}
// 3.不能有长度大于2的包含公共元素的子串重复 (注:其他符号不含空格或换行)
boolean flag = getTwoLength(str, 0, 2);
if (!flag) {
System.out.println("不合格");
} else {
System.out.println("合格");
}
}
private static boolean getTwoLength(String str, int s, int e) {
if(e > str.length()){
return true;
}
if (!str.substring(e).contains(str.substring(s, e))) {
s = s + 1;
e = e + 1;
return getTwoLength(str, s, e);
} else {
return false;
}
}
相关文章
- 如何在 VS Code 中为 Java 类生成序列化版本号
- Freemarker-数字默认格式化问题
- Chrome扩展插件的开发--获取网页Cookies
- 【以解决】项目使用feign时候提示bean不能注入feign
- Docker设置容器开机自启
- 常用的淘汰算法
- 分布式事务seata,TCC,最大努力通知,最终一致性解决方案——总结三!
- java分布式事务——最终一致性,最大努力通知总结!
- java分布式事务——seata,tcc解决方案总结!
- 分布式系统–拜占庭将军问题(The Byzantine Generals Problem)
- idea中启动SSM项目
- 【编程】给定一个部门,变量出当前部门的所有父部门包含当前部门
- 【解疑】ConcurrentHashMap 在JDK1.7时候put或get时候,怎么定位到数据的?
- Spring的BeanFactoryPostProcessor
- spring注解开发AnnotationConfigApplicationContext的使用
- 匿名内部类方式实现线程的创建
- spring异常:No runnable methods 解决方法
- 基础IO的理解与操作 - fd
- 【图文教程】Centos 7下安装Hadoop-管杀管埋的
- 【Flink教程-已解决】在idea中测试flink的时候,提示读取文件时候错误,提示文件不存在解决方案