题解 | #密码验证合格程序#
密码验证合格程序
http://www.nowcoder.com/practice/184edec193864f0985ad2684fbc86841
几点注意:
- 条件2:判断属于小写字母、大写字母、数字或特殊符号,不需要关心对应的十进制数,直接用字符进行比较;
- 条件3:不存在长度大于2的重复子串,只需要判断是否存在长度为3的重复子串即可(哈希表法),因为长度大于等于3的重复子串都一定包含了长度为3的重复子串
def check():
# 输入一组字符串
string = input()
# 条件1:长度超过8
if len(string) <= 8:return 0
# 条件2:小写字母、大写字母、数字、特殊符号,必须至少包含3种
a,b,c,d = 0,0,0,0
for i in string:
if 'a' <= i <= 'z':
a = 1
elif 'A' <= i <= 'Z':
b = 1
elif '0' <= i <= '9':
c = 1
else:
d = 1
if a+b+c+d < 3: return 0
# 条件3:重复子串的长度不能大于2
dic = {}
for i in range(len(string)-3):
subString = string[i:i+3]
if subString not in dic:
dic[subString] = 1
else:
dic[subString] += 1
if dic[subString] >=2 : return 0
return 1
while True:
try:
if check():
print("OK")
else:
print("NG")
except:
break