博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
密码验证合格程序
阅读量:6307 次
发布时间:2019-06-22

本文共 1759 字,大约阅读时间需要 5 分钟。

hot3.png

题目描述

密码要求:1.长度超过8位2.包括大小写字母.数字.其它符号,以上四种至少三种3.不能有相同长度超2的子串重复说明:长度超过2的子串

输入描述

一组或多组长度超过2的子符串。每组占一行

输出描述

如果符合要求输出:OK,否则输出NG

输入例子

021Abc9000021Abc9Abc1021ABC9000021$bc9000

输出例子

OKNGNGOK

算法实现

import java.util.Scanner;/** *  * All Rights Reserved !!! */public class Main {    public static void main(String[] args) {        Scanner scanner = new Scanner(System.in);//        Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));        StringBuilder builder = new StringBuilder();        while (scanner.hasNext()) {            String input = scanner.nextLine();            System.out.println(passwordValidate(input));        }        scanner.close();    }    private static String passwordValidate(String input) {        final String OK = "OK";        final String NG = "NG";        // 长度超过8        if (input == null || input.length() < 9) {            return NG;        }        int[] kind = new int[4];        // 统计        for (int i = 0; i < input.length(); i++) {            char ch = input.charAt(i);            if (ch >= 'A' && ch <= 'Z') {                kind[0] |= 1;            } else if (ch >= 'a' && ch <= 'z') {                kind[1] |= 1;            } else if (ch >= '0' && ch <= '9') {                kind[2] |= 1;            } else {                kind[3] |= 1;            }        }        // 小于三种        if ((kind[0] + kind[1] + kind[2] + kind[3]) < 3) {            return NG;        }        for (int i = 0; i < input.length() - 3; i++) {            String s1 = input.substring(i, i + 3);            String s2 = input.substring(i + 3, input.length());            if (s2.contains(s1)) {                return NG;            }        }        return OK;    }}

转载于:https://my.oschina.net/u/2822116/blog/817671

你可能感兴趣的文章
路由器ospf动态路由配置
查看>>
zabbix监控安装与配置
查看>>
python 异常
查看>>
last_insert_id()获取mysql最后一条记录ID
查看>>
可执行程序找不到lib库地址的处理方法
查看>>
bash数组
查看>>
Richard M. Stallman 给《自由开源软件本地化》写的前言
查看>>
oracle数据库密码过期报错
查看>>
修改mysql数据库的默认编码方式 .
查看>>
zip
查看>>
How to recover from root.sh on 11.2 Grid Infrastructure Failed
查看>>
rhel6下安装配置Squid过程
查看>>
《树莓派开发实战(第2版)》——1.1 选择树莓派型号
查看>>
在 Linux 下使用 fdisk 扩展分区容量
查看>>
结合AlphaGo算法和大数据的量化基本面分析法探讨
查看>>
如何在 Ubuntu Linux 16.04 LTS 中使用多个连接加速 apt-get/apt
查看>>
《OpenACC并行编程实战》—— 导读
查看>>
机器学习:用初等数学解读逻辑回归
查看>>
如何在 Ubuntu 中管理和使用逻辑卷管理 LVM
查看>>
Oracle原厂老兵:从负面案例看Hint的最佳使用方式
查看>>