密码要求:
1.长度超过8位
2.包括大小写字母.数字.其它符号,以上四种至少三种
3.不能有长度大于2的不含公共元素的子串重复 (注:其他符号不含空格或换行)
答案与解析import sys
import re
for i in sys.stdin:
i = i.strip()
if len(i) <= 8:
print('NG')
else:
sub = []
#最大重复子串长度2
for item in range(len(i)-2):
# 生成一个长度为3的所有子串序列;
# 因为长度大于4的相同子串,必定存在长度3的相同子串);
sub.append(i[item:item+3])
# 用set去重,判断长度就可以知道是否有重复;
if len(set(sub)) < len(sub):
print('NG')
else:
num = 0
U = '[A-Z]'
L = '[a-z]'
m = '\d'
chars = '[^A-Za-z0-9_]'
typelist = [U, L, m, chars]
for t in typelist:
r = re.search(t,i)
if r:
num += 1
if num >= 3:
print('OK')
else:
print('NG')
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)