链接:https://www.nowcoder.com/questionTerminal/184edec193864f0985ad2684fbc86841?orderByHotValue=1&questionTypes=000100&mutiTagIds=579&page=1&onlyReference=false
来源:牛客网
密码要求:
1.长度超过8位
2.包括大小写字母.数字.其它符号,以上四种至少三种
3.不能有相同长度超2的子串重复
说明:长度超过2的子串
输入描述:
一组或多组长度超过2的子符串。每组占一行
输出描述:
如果符合要求输出:OK,否则输出NG
解题思路:主要是重复字符串子串那里需要你进行切割判断,这里需要利用String中的contains函数判断从这个子串之后是否有重复的,注意:长度大于2的子串。
import java.util.*;
public class Main {
public static int panduan(String s){
int sum = 0;
int a = 0,b = 0,c = 0,d = 0;
char[] chars = s.toCharArray();
for(int i = 0;i<chars.length;i++){
if(chars[i] >= 'A' && chars[i] <='Z'){
a = 1;
}else if(chars[i] >= 'a' && chars[i] <='z'){
b = 1;
}else if(chars[i] >= '0' && chars[i] <='9'){
c = 1;
}else {
d = 1;
}
}
sum = a+b+c+d;
return sum;
}
public static boolean panduan2(String s){
for(int i = 0;i<s.length()-2;i++){
String substring = s.substring(i, i + 3);
if(s.substring(i+3).contains(substring))
return false;
}
return true;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()){
String s = sc.nextLine();
if(s.length()<=8){
System.out.println("NG");
}else {
if(panduan(s)<3){
System.out.println("NG");
}else {
if (panduan2(s)){
System.out.println("OK");
}else {
System.out.println("NG");
}
}
}
}
}
}