密码要求:
1.长度超过8位
2.包括大小写字母.数字.其它符号,以上四种至少三种
3.不能有相同长度大于等于2的子串重复
输入描述:
一组或多组长度超过2的子符串。每组占一行
输出描述:
如果符合要求输出:OK,否则输出NG
示例1
题目链接
分析:
1.通过字符串读取输入的数据,读到后判断长度,如果长度小于等于8,则不满足。
2.对于字符串中的每个字符,进行判断,如果不满足3个及以上类型,则不满足
3.题目要求不能有大于等于2的相同字符串,那么我们每次截取长度为3的字符串,与它相邻长度为3的字符串比较,如果有相同的,则不满足。
代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNextLine()) {
String s = scanner.nextLine();
char arr[] = s.toCharArray();
int a = 0;
int b = 0;
int c = 0;
int d = 0;
//每读到一种类型,就加一
for(int i = 0; i<arr.length; i++) {
if(arr[i]>='0'&&arr[i]<='9') {
a = 1;
}
else if(arr[i]>='a'&&arr[i]<='z') {
b = 1;
}
else if(arr[i]>='A'&&arr[i]<='Z') {
c = 1;
}else {
d = 1;
}
}
boolean e = false;
for(int i = 0; i<s.length()-3; i++) {
for(int j = i+1; j<s.length()-3; j++) {
if(s.substring(i,i+3).equals(s.substring(j,j+3))){
e = true;
}
}
}
if(e==true||s.length()<=8||a+b+c+d<3){//如果有一个不满足,则输出"NG"
System.out.println("NG");
}else{
System.out.println("OK");
}
}
}
}
如果觉得有帮助,帮忙点个赞哦。