首页 > 试题广场 >

密码验证合格程序

[编程题]密码验证合格程序
  • 热度指数:441591 时间限制: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 位,不满足条件。
头像 Tasen
发表于 2021-09-29 00:03:57
def check(s): if len(s) <= 8: return 0 a, b, c, d = 0, 0, 0, 0 for item in s: if ord('a') <= ord(item) <= ord('z' 展开全文
头像 Joy917
发表于 2021-09-08 01:03:51
import java.util.*; import java.util.regex.*; public class Main{ public static void main(String[] arg){ Scanner sc = new Scanner(System.in 展开全文
头像 不会做题的小菜鸡
发表于 2021-11-02 23:44:44
题目分析 题目给出我们若干条字符串,其含义是我们经常会注册登录所使用的密码 题目对密码格式进行要求 第一点:密码必须超过8位 第二点:必须有大写字母、小写字母、数字、符号四种中的三种 第三点:密码不能有重复的公共子串,公共子串长度判定为3个字符及以上 我们要输出其是否符合以上条件的判断结 展开全文
头像 不是鸽们儿
发表于 2020-03-04 13:18:34
构造一个检查函数 checkLegal 1)生成一个长度为3的所有子串序列(因为长度大于4的相同子串,必定存在长度3的相同子串); 2)if len(set(sub)) < len(sub):return False python 用set去重,判断长度就可以知道是否有重复; 3)类型用正则匹 展开全文
头像 虎太郎
发表于 2022-01-18 17:04:55
package cn.gywulian.by; import java.util.*; /** * @author lc * @version 1.0.0 * @ClassName HW20.java * @Description 密码验证合格程序 * @createTime 2022 展开全文
头像 full_hope
发表于 2022-02-18 17:06:50
if len(s)<=8: return 'NG' li = [0,0,0,0] for i in s: if i.isdigit(): li[0]=1 elif i.islower(): 展开全文
头像 水木清华_AI
发表于 2020-03-15 17:12:38
/* 本文系「人工智能安全」(微信公众号)原创,转载请联系本文作者(同博客作者)。 欢迎你转发分享至朋友圈,并给予「关注、星标、点赞」三连支持。互相欣赏,互相批判。 我是一名有诗人气质的网络安全工程师 期待与你的思想交流碰撞出智慧的花火 水木清华 2002-03-15 密码验证合格程序 */ #in 展开全文
头像 摸鱼学大师
发表于 2021-10-10 20:30:51
题目的主要信息: 验证输入的密码是否符合要求,输入一组或者多组长度超过2的字符串,要求输出OK(符合要求)或者NG(不符合要求) 密码要求: 长度超过8位 包括大小写字母.数字.其它符号,以上四种至少三种 不能有相同长度大于2的子串重复 方法一:暴力验证 具体做法: 分三 展开全文
头像 🌞张太阳同学🌞
发表于 2020-10-29 23:54:08
import java.util.*; import java.util.regex.*; public class Main{ public static void main(String[] arg){ Scanner sc=new Scanner(System.in); 展开全文
头像 月迷津渡™
发表于 2022-02-26 00:31:09
const list = [] let itm; while(itm=readline()){ list.push(itm) } for(let itm of list){ if(!(/.{9,}/.test(itm))){ console.log('NG'); 展开全文