首页 > 试题广场 >

密码验证合格程序

[编程题]密码验证合格程序
  • 热度指数:443530 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
\hspace{15pt}你需要书写一个程序验证给定的密码是否合格。

\hspace{15pt}合格的密码要求:
\hspace{23pt}\bullet\,长度不少于 8
\hspace{23pt}\bullet\,必须包含大写字母、小写字母、数字、特殊字符中的至少三种
\hspace{23pt}\bullet\,不能分割出两个独立的、长度大于 2 的连续子串,使得这两个子串完全相同;更具体地,如果存在两个长度大于 2 的独立子串 s_1,s_2 ,使得 s_1=s_2 ,那么密码不合法。

\hspace{15pt}子串为从原字符串中,连续的选择一段字符(可以全选、可以不选)得到的新字符串。

\hspace{15pt}可见字符集为 ASCII 码在 33126 范围内的可见字符。您可以参阅下表获得其详细信息(您可能关注的内容是,这其中不包含空格、换行)。

../图片/AllAscii.png

输入描述:
\hspace{15pt}本题将会给出 1 \leqq T \leqq 10 组测试数据,确切数字未知,您需要一直读入直到文件结尾;您也可以参考 牛客网在线判题系统使用帮助 获得更多的使用帮助。每组测试数据描述如下:

\hspace{15pt}在一行上输入一个长度为 1 \leqq {\rm length}(s) \leqq 100 ,由可见字符构成的字符串 s ,代表待判断的密码。


输出描述:
\hspace{15pt}对于每一组测试数据,新起一行。若密码合格,输出 \textrm{OK} ,否则输出 \textrm{NG}
示例1

输入

021Abc9000
021Abc9Abc1
021ABC9000
021$bc9000
021Abc1111

输出

OK
NG
NG
OK
OK

说明

\hspace{15pt}对于第二组测试数据,\texttt{ 中存在两个长度大于 2 的独立子串 \texttt{ ,即橙色标记部分。
\hspace{15pt}对于第三组测试数据,仅包含大写字母和数字,不满足条件。
示例2

输入

Abc1@
A1@ababa@1A

输出

NG
OK

说明

\hspace{15pt}对于第一组测试数据,长度不足 8 位,不满足条件。

这道题你会答吗?花几分钟告诉大家答案吧!