题解 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题库#
华为OD笔试库讲解,JAVA版 文章被收录于专栏

随便发发而已

全部评论

相关推荐

想去夏威夷的小哥哥在度假:5和6才是重点
点赞 评论 收藏
分享
ProMonkey2024:5个oc?厉害! 但是有一个小问题:谁问你了?😡我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了(别的帖子偷来的,现学现卖😋)
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务