HJ20 密码验证合格程序
描述
密码要求:
1.长度超过8位
2.包括大小写字母.数字.其它符号,以上四种至少三种
3.不能有长度大于2的不含公共元素的子串重复 (注:其他符号不含空格或换行)
数据范围: 输入的字符串长度满足 1≤n≤100
输入描述: 一组字符串。
输出描述: 如果符合要求输出:OK,否则输出NG
示例1
输入:
021Abc9000
021Abc9Abc1
021ABC9000
021$bc9000
输出:
OK
NG
NG
OK
#要求3长度大于2的字符串重复,输出 NG
def check_password(password: str):
import re
pattern = re.compile("^[^\n\t]$")
if len(password) > 8:
count = 0
if re.search('[a-z]', password):
count += 1
if re.search('[A-Z]', password):
count += 1
if re.search('[0-9]', password):
count += 1
if re.search('\W', password):
count += 1
if re.match(pattern, password) is None and count > 2:
v = {}
for i in range(len(password)-2):
# 长度大于2的字符串
if v.get(password[i: i+3]):
return "NG"
else:
v[password[i: i+3]] = 1
return "OK"
return "NG"
while True:
try:
print(check_password(input("")))
except:
break