- 密码要求:
1.长度超过8位
2.包括大小写字母.数字.其它符号,以上四种至少三种
3.不能有长度大于2的不含公共元素的子串重复 (注:其他符号不含空格或换行)
数据范围:输入的字符串长度满足 1 \le n \le 100 \1≤n≤100 - 输入描述:
一组字符串。 - 输出描述:
如果符合要求输出:OK,否则输出NG
解决思路
1.每个字符判断是大小写字母,数字或特殊字符时,会出现重复;所以使用set集合去重
2.不能有长度大于2的子串,然而长度大于2的所有子串可以通过长度为3的子串体现出来,只要有长度大于3的子串就是NG
# ACM模式
def function(ss):
count = set()
flag = 0
if len(ss) > 8:
for i in range(len(ss)):
ret = ""
# 数字
if ss[i].isdigit():
count.add("1")
# 小写字母
elif ss[i].islower():
count.add("2")
# 大写字母
elif ss[i].isupper():
count.add("3")
# 其他字符
else:
count.add("4")
if len(count) >= 3:
for i in range(len(ss) - 3):
if ss.count(ss[i:i+3]) >= 2:
return False
return True
while True:
try:
ss = input()
if function(ss):
print("OK")
else:
print("NG")
except:
break