题解 | #密码验证合格程序#

密码验证合格程序

https://www.nowcoder.com/practice/184edec193864f0985ad2684fbc86841

import java.util.Scanner;
//没有用到正则,算是暴力解题
public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        while (sc.hasNextLine()){
            String str=sc.nextLine().trim();
            int flag=1;//没有重复子字符串的标志位
            char[] ch=str.toCharArray();
            int[] flag1={0,0,0,1};//各类字符的标志位
            int flag2=0;//累加器
            //长度大于8
            if (str.length()<8){
                System.out.println("NG");
            }
            //长度大于2的子字符串不会出现两次
            //方法是判断子串不被剩下两个子串包含,用contains来判断
            if (str.length()>=8){
                for (int i = 0; i <str.length()-2 ; i++) {
                    for (int j = i + 3; j < str.length(); j++) {
                        if (str.substring(0, i).contains(str.substring(i, j)) || str.substring(j).contains(str.substring(i, j))) {
                            flag = 0;
                            continue;
                        }
                    }
                }
                if (flag==0){
                    System.out.println("NG");
                }
			  //校验字符种类大于3种,利用设置的字符种类的标志位
                if (flag==1){
                    for (char ch1:ch
                    ) {
                        if (Character.isDigit(ch1)){
                            flag1[0]=1;
                            flag2 ++;
                        }
                        if (Character.isLowerCase(ch1)){
                            flag1[1]=1;
                            flag2 ++;
                        }
                        if (Character.isUpperCase(ch1)){
                            flag1[2]=1;
                            flag2 ++;
                        }
                        if (flag2==str.length()){
                            flag1[3]=0;//表示没有其他特殊字符
                        }
                    }
                    if ((flag1[0]+flag1[1]+flag1[2]+flag1[3])>2){
                        System.out.println("OK");
                    }else {
                        System.out.println("NG");
                    }
                }
            }
        }

    }
}

#算暴力解法吗#
全部评论

相关推荐

贺兰星辰:不要漏个人信息,除了简历模板不太好以外你这个个人简介是不是太夸大了...
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务