题解 | #密码验证合格程序#
密码验证合格程序
https://www.nowcoder.com/practice/184edec193864f0985ad2684fbc86841
def valid(s):
def step1(s):
if len(s) <= 8:return False
return True
if not step1(s):return "NG"
def step2(s):
ans = 0
sletter = set(chr(97 + i) for i in range(26))
lletter = set(chr(ord("A") + i) for i in range(26))
num = set('0123456789')
s = list(s)
for i in range(len(s)):
if s[i] in sletter:
s[i] = 1
elif s[i] in lletter:
s[i] = 2
elif s[i] in num:
s[i] = 3
else:
s[i] = 4
if len(set(s)) < 3:
return False
return True
if not step2(s):return "NG"
def step3(s):
n = len(s)
for length in range(3, n + 1):
for i in range(n - length + 1):#枚举所有3个以上的
substring = s[i:i+length]
for j in range(i + 1, n - length + 1):#从这个字符往后枚举
if substring == s[j:j+length]: #这个字符重复过了
return False
return True
if not step3(s):
return "NG"
return "OK"
while True:
try:
print(valid(input()))
except:
break
查看5道真题和解析