题解 | #密码验证合格程序#
密码验证合格程序
https://www.nowcoder.com/practice/184edec193864f0985ad2684fbc86841
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while(in.hasNextLine()){
String s = in.nextLine();
isValidCode(s);
}
}
public static boolean isRepeat(String s){
Set<String> hashset = new HashSet<String>();
int n = s.length();
for(int i=0 ; i<n-3 ; ++i){
String substring = s.substring(i,i+3);
if(hashset.contains(substring)){
return false;
}
hashset.add(substring);
}
return true;
}
public static void isValidCode(String s){
int n = s.length();
if(n <= 8){
System.out.println("NG");
return;
}
int[] count= new int[4];
for(int i=0 ; i<n ; ++i){
int hasNumber=0, hasLowCase=0, hasUpperCase=0, others=0;
char c = s.charAt(i);
int c_ascII = (int) c;
if(count[0]+count[1]+count[2]+count[3] == 3){
break;
}
if(c_ascII>=48 && c_ascII<=57){
if(count[0] == 0){
++count[0];
}
hasNumber = 1;
}
if(c_ascII>=65 && c_ascII<=90){
if(count[1] == 0){
++count[1];
}
hasUpperCase = 1;
}
else if(c_ascII>=97 && c_ascII<=122){
if(count[2] == 0){
++count[2];
}
hasLowCase = 1;
}
else if(hasNumber!=1 && hasLowCase!=1 && hasUpperCase!=1){
if(count[3] == 0){
++count[3];
}
others = 1;
}
}
if(count[0]+count[1]+count[2]+count[3] >= 3 && isRepeat(s)){
System.out.println("OK");
}
else{
System.out.println("NG");
}
}
}