牛客 HJ20 密码验证合格程序
Posted 顧棟
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了牛客 HJ20 密码验证合格程序相关的知识,希望对你有一定的参考价值。
描述
密码要求:
1.长度超过8位
2.包括大小写字母.数字.其它符号,以上四种至少三种
3.不能有长度大于2的包含公共元素的子串重复 (注:其他符号不含空格或换行)
数据范围:输入的字符串长度满足 1 ≤ n ≤ 100 1 \\le n \\le 100 1≤n≤100
输入描述:
一组字符串。
输出描述:
如果符合要求输出:OK,否则输出NG
示例1
输入:
021Abc9000
021Abc9Abc1
021ABC9000
021$bc9000
输出:
OK
NG
NG
OK
java实现
- 主要是对条件三进行操作,通过将字符串从拆分成两部分。若大部分中还拥有小部分,说明短字符串重复存在。
package nowcoder.x2x;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class HJ020
public static void main(String[] args) throws IOException
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String input;
while (null != (input = reader.readLine()))
if (input.length() < 9)
System.out.println("NG");
continue;
char[] chars = input.toCharArray();
int a1 = 0, b1 = 0, c1 = 0, d1 = 0;
int n = 0;
for (char c : chars)
if (c >= 'A' && c <= 'Z')
a1 = 1;
else if (c >= 'a' && c <= 'z')
b1 = 1;
else if (c >= '0' && c <= '9')
c1 = 1;
else if (c == ' ' || c == '\\n')
break;
else
d1 = 1;
if (a1 + b1 + c1 + d1 < 3)
System.out.println("NG");
continue;
boolean flag = false;
// 将字符串从拆分成两部分。若大部分中还拥有小部分,说明短字符串重复存在。
for (int i = 3; i < input.length(); i++)
if (input.substring(i).contains(input.substring(i - 3, i)))
System.out.println("NG");
flag = true;
// 跳出for,提高效率
break;
if (flag)
continue;
System.out.println("OK");
以上是关于牛客 HJ20 密码验证合格程序的主要内容,如果未能解决你的问题,请参考以下文章