题解 | #密码验证合格程序#
密码验证合格程序
http://www.nowcoder.com/practice/184edec193864f0985ad2684fbc86841
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
String str=sc.nextLine().trim();
if(isOK1(str) && isOK2(str)) {System.out.println("OK");}
else {System.out.println("NG");}
}
}
static boolean isOK1(String s){
if(s.length()<=8) return false;
boolean flags04=true;
int flags03=0,flags01=0,flags02=0,flags00=0;
for(int i=0;i<s.length();i++){
char t=s.charAt(i);
if(Character.isWhitespace(t)) flags04=false;
if(Character.isDigit(t)) flags01=1;
else if(Character.isUpperCase(t)) flags02=1;
else if(Character.isLowerCase(t)) flags03=1;
else flags00=1;
}
if(!(flags00 + flags01 +flags02 + flags03 >= 3 )&& flags04) return false;
return true;
}
static boolean isOK2(String s){
Set<String> set = new HashSet<>();
for(int i=0;i<s.length()-2;i++){
if(!set.add(s.substring(i,i+3))) return false;
}
return true;
}
}
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
String str=sc.nextLine().trim();
if(isOK1(str) && isOK2(str)) {System.out.println("OK");}
else {System.out.println("NG");}
}
}
static boolean isOK1(String s){
if(s.length()<=8) return false;
boolean flags04=true;
int flags03=0,flags01=0,flags02=0,flags00=0;
for(int i=0;i<s.length();i++){
char t=s.charAt(i);
if(Character.isWhitespace(t)) flags04=false;
if(Character.isDigit(t)) flags01=1;
else if(Character.isUpperCase(t)) flags02=1;
else if(Character.isLowerCase(t)) flags03=1;
else flags00=1;
}
if(!(flags00 + flags01 +flags02 + flags03 >= 3 )&& flags04) return false;
return true;
}
static boolean isOK2(String s){
Set<String> set = new HashSet<>();
for(int i=0;i<s.length()-2;i++){
if(!set.add(s.substring(i,i+3))) return false;
}
return true;
}
}