算法-密码检验合格程序
说明:长度超过2的子串
输入描述:
一组或多组长度超过2的子符串。每组占一行
输出描述:
如果符合要求输出:OK,否则输出NG
示例1
输入:
021Abc9000
021Abc9Abc1
021ABC9000
021$bc9000
输出:
OK
NG
NG
OK
来源:牛客网
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
while (input.hasNext()){
String code = input.nextLine();
System.out.println(validCode(code));
}
input.close();
}
public static String validCode(String code){
String result = "";
if(validContains(code) && validLength(code) && validDuplicate(code)){
result = "OK";
}
else{result = "NG";}
return result;
}
public static boolean validDuplicate(String code)
{
for(int i = 0; i < code.length()-3; i++){
if(code.substring(i+3).contains(code.substring(i,i+3))){
return false;
}
}
return true;
}
public static boolean validContains(String code){
boolean vaild = false;
int upper = 0; int lower = 0; int num = 0; int character = 0;
for(int i = 0; i < code.length(); i++){
if(Character.isUpperCase(code.charAt(i))){upper = 1;}
else if(Character.isLowerCase(code.charAt(i))){lower = 1;}
else if(Character.isDigit(code.charAt(i))){num = 1;}
}
String removeCharacter = code.replaceAll("[^a-zA-Z0-9]","");
if(removeCharacter.length() < code.length()){
character = 1;
}
if(upper + lower + num + character >= 3){
vaild = true;
}
return vaild;
}
public static boolean validLength(String code){
boolean valid = false;
int len = code.length();
if(len > 8){valid = true;}
else{valid = false;}
return valid;
}
}
笔记:
在一个String中截取子串的方法:
string.substring(int beginIndex)
截取从beginIndex直到结尾。
string.substring(int beginIndex, int endIndex)
截取部分字串。
举例 : "Chaitanya".substring(2,5);
返回"ait". 区间左开右闭。