题解 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题库# 360集团公司氛围 355人发布
360集团公司氛围 355人发布