题目:
密码要求:
1.长度超过8位
2.包括大小写字母.数字.其它符号,以上四种至少三种
3.不能有长度大于2的包含公共元素的子串重复 (注:其他符号不含空格或换行)
数据范围:输入的字符串长度满足 1 \le n \le 100 \1≤n≤100
输入描述:
一组字符串。
输出描述:
如果符合要求输出:OK,否则输出NG
思路:
要求3:感觉优点拗口,它是想表达,长度大于3的子串不能重复出现
像 “021ababaA0”中 子串“aba"重复出现了,也不行
解答:
while True:
try:
s = input()
types = 0
mark = [0] * 4
n = len(s)
if n <= 8:
print('NG')
else:
for c in s:
if mark[0] == 0 and c.islower():
types += 1
mark[0] = 1
elif mark[1] == 0 and c.isupper():
types += 1
mark[1] = 1
elif mark[2] == 0 and c.isdigit():
types += 1
mark[2] = 1
elif mark[3] == 0 and (not c.isalnum()):
types += 1
mark[3] = 1
if types < 3:
print("NG")
else:
flag = False
# 长度大于3的子串不能重复出现
for i in range(n - 2):
if s[i:i + 3] in s[i + 1:]:
flag = True
print("NG")
break
if not flag:
print('OK')
except EOFError:
break