华为在线编程系列-密码合格验证

来源:互联网 发布:软件如何推广 编辑:程序博客网 时间:2024/05/21 15:42
  • 题目:

    • 密码要求:
      1.长度超过8位
      2.包括大小写字母.数字.其它符号,以上四种至少三种
      3.不能有相同长度超2的子串重复
      说明:长度超过2的子串
    • 输入描述:
      一组或多组长度超过2的子符串。每组占一行
    • 输出描述
      如果符合要求输出:OK,否则输出NG
  • 例子:

    输入:021Abc9000021Abc9Abc1021ABC9000021$bc9000输出:OKNGNGOK
  • 代码:对三种情况分别进行判断,其中对于第二个要求,可以用一个大小为4的数组来记录字符串的种类数

import java.util.*;public class Main{    public static void main(String[] args){        Scanner scan = new Scanner(System.in);        while(scan.hasNext()){            String value = scan.nextLine();            //第一个要求            if(value == null || value.length() <= 8){                System.out.println("NG");            }else{                int[] category = new int[4];                for(int i = 0; i < value.length(); i++){                    if(value.charAt(i) <= 'Z' && value.charAt(i) >= 'A'){                        category[0] = 1;                    }else if(value.charAt(i) <= 'z' && value.charAt(i) >= 'a'){                        category[1] = 1;                    }else if(value.charAt(i) <= '9' && value.charAt(i) >= '0'){                        category[2] = 1;                    }else{                        category[3] = 1;                    }                }                if(category[0] + category[1] + category[2] + category[3] < 3){                    System.out.println("NG");                }else{                    System.out.println(isValidSubString(value));                }            }        }    }    private static String isValidSubString(String str){        for(int i = 3; i < str.length();i++){            String str1 = str.substring(i-3,i);            String str2 = str.substring(i,str.length());            if(str2.contains(str1)){                return "NG";            }        }        return "OK";    }}
0 0