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

密码验证合格程序

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

  1. 校验字符串不能小于8
  2. 校验数字通过Character.isDigit()方法
  3. 校验大写字母通过:Character.isLetter()和Character.isUpperCase()
  4. 校验小写字母通过:Character.isLetter()和Character.isLowerCase()
  5. 特殊字符:非数字、非字符串即可
  6. 重复字符串,通过两层循环,内层循环大于等于3时开始截取,并判断包含,为true则跳出

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextLine()) {
            String password = in.nextLine();
            if (password.length() < 8) {
                System.out.println("NG");
                continue;
            }
            boolean isDigit = false;
            boolean isUpperCase = false;
            boolean isLowerCase = false;
            boolean specialCharacter = false;
            boolean checksubStrErr = false;
            int checkNum = 0;
            char[] charArray = password.toCharArray();
            for (int i = 0; i < charArray.length; i++) {
                char val = charArray[i];
                if (Character.isDigit(val) && !isDigit) {
                    isDigit = Boolean.TRUE;
                    checkNum++;
                } else if (Character.isLetter(val) && Character.isUpperCase(val) && !isUpperCase) {
                    isUpperCase = Boolean.TRUE;
                    checkNum++;
                } else if (Character.isLetter(val) && Character.isLowerCase(val) && !isLowerCase) {
                    isLowerCase = Boolean.TRUE;
                    checkNum++;
                } else if (!Character.isDigit(val) && !Character.isLetter(val) && !specialCharacter) {
                    specialCharacter = Boolean.TRUE;
                    checkNum++;
                }

                for (int j = i; j < charArray.length; j++) {
                    if (j - i > 2) {
                        String substr = password.substring(i, j);
                        String otherStr = password.substring(j, password.length());
                        checksubStrErr = otherStr.contains(substr);
                    }
                    if (checksubStrErr) {
                        break;
                    }
                }
            }
            if ((checkNum < 3) || checksubStrErr) {
                System.out.println("NG");
                continue;
            }
            System.out.println("OK");
        }
    }
}

全部评论

相关推荐

冲鸭2024:亚信不去也罢
投递亚信科技(中国)有限公司等公司6个岗位
点赞 评论 收藏
分享
牛客78682892...:直接点还好,总比要了简历也不回的强
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务