题解 HJ20| #密码验证合格程序#
密码验证合格程序
https://www.nowcoder.com/practice/184edec193864f0985ad2684fbc86841
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNextLine()) { // 注意 while 处理多个 case String str=in.nextLine(); testkey(str); } } public static void testkey(String key){ int A=0;//定义一个检测判别标准 if(key.length()>8)A=1; if(A==1){ for(int i=0;i<key.length();i++){ if(key.charAt(i)<='z'&&key.charAt(i)>='a'){A++;break;} } for(int i=0;i<key.length();i++){ if(key.charAt(i)<='Z'&&key.charAt(i)>='A'){A++;break;} } for(int i=0;i<key.length();i++){ if(key.charAt(i)<='9'&&key.charAt(i)>='0'){A++;break;} } int cout=0; for(int i=0;i<key.length();i++){ if(key.charAt(i)<='9'&&key.charAt(i)>='0'&&key.charAt(i)!=' '&&key.charAt(i)!='\n'||key.charAt(i)<='z'&&key.charAt(i)>='a'&&key.charAt(i)!=' '&&key.charAt(i)!='\n'||key.charAt(i)<='Z'&&key.charAt(i)>='A'&&key.charAt(i)!=' '&&key.charAt(i)!='\n')cout++; } if(cout!=key.length())A++; } if(A>=4){ for(int i=0;i<key.length()-3;i++){ for(int j=i+3;j<key.length()-2;j++){ if(key.charAt(i)==key.charAt(j)){ if(key.charAt(i+1)==key.charAt(j+1)){ if(key.charAt(i+2)==key.charAt(j+2))A=0; } } } } } if(A>=4)System.out.println("OK"); else System.out.println("NG"); } }
定义一个string来接受字符串
Scanner in = new Scanner(System.in);
while (in.hasNextLine()) { // 注意 while 处理多个 case
String str=in.nextLine();
testkey(str);
之后写一个判别函数就好,主要分为四个步骤
第一:字符串长度>8则A++
第二:判断是否有大写字母,是否有小写字母,是否有数字,是否有其他字符(空格换行不算)有则A++
第三:如果A>=4,(大小写数组其他有三个即可)则继续判定有没有字符串重复
第四:for从第一个字符开始检测,i,length再for从第j=i+3个字符开始检测,如果有相同的,比较i+1和J+1,还相同再比
再相同A=0
最后看A>=4?OK: NG
public static void testkey(String key){
int A=0;//定义一个检测判别标准
if(key.length()>8)A=1;
if(A==1){
for(int i=0;i<key.length();i++){
if(key.charAt(i)<='z'&&key.charAt(i)>='a'){A++;break;}
}
for(int i=0;i<key.length();i++){
if(key.charAt(i)<='Z'&&key.charAt(i)>='A'){A++;break;}
}
for(int i=0;i<key.length();i++){
if(key.charAt(i)<='9'&&key.charAt(i)>='0'){A++;break;}
}
int cout=0;
for(int i=0;i<key.length();i++){
if(key.charAt(i)<='9'&&key.charAt(i)>='0'&&key.charAt(i)!=' '&&key.charAt(i)!='\n'||key.charAt(i)<='z'&&key.charAt(i)>='a'&&key.charAt(i)!=' '&&key.charAt(i)!='\n'||key.charAt(i)<='Z'&&key.charAt(i)>='A'&&key.charAt(i)!=' '&&key.charAt(i)!='\n')cout++;
}
if(cout!=key.length())A++;
}
if(A>=4){
for(int i=0;i<key.length()-3;i++){
for(int j=i+3;j<key.length()-2;j++){
if(key.charAt(i)==key.charAt(j)){
if(key.charAt(i+1)==key.charAt(j+1)){
if(key.charAt(i+2)==key.charAt(j+2))A=0;
}
}
}
}
}
if(A>=4)System.out.println("OK");
else System.out.println("NG");
}
}
#华为od题库#随便发发而已