题目信息
密码要求:
1.长度超过8位
2.包括大小写字母.数字.其它符号,以上四种至少三种
3.不能有相同长度大于2的子串重复
输入描述
一组或多组长度超过2的字符串。每组占一行
输出描述
如果符合要求输出:OK,否则输出NG
输入示例
021Abc9000
021Abc9Abc1
021ABC9000
021$bc9000
输出示例
OK
NG
NG
OK
题解
根据题意可得到如下信息:
- 密码长度大于8
- 至少包含大写字母、小写字母、数字和特殊字符至少三种
- 不能包含相同的长度大于2的子字符串
长度大于2的相同的子字符串,长度至少等于3的子串。找到有不同位置的相同的字符,若不同位置的字符后面相邻的两个字符都相同,则算是有长度等于3的相同的子串。
编码
编码中,对于密码长度大于8和不能包含相同的长度大于3的子串这个好处理
对于至少包含3中及以上字符种类,使用map和数组两种方式实现
方法一,map实现
import java.io.BufferedReader;
import java.io.IOExcep