题解 | 密码验证合格程序
密码验证合格程序
https://www.nowcoder.com/practice/184edec193864f0985ad2684fbc86841
分类讨论,逐渐提高判断复杂度
- 长度
- 利用正则判断密码类型
- 将所有的子串保存下来,然后通过set()去重,判断是否有重复即可
import re
import sys
def check(p) -> bool:
# 判断长度
if len(p) < 8:
return False
# 判断类型
t_num = re.search("[0-9]", p)
t_low = re.search("[a-z]", p)
t_upp = re.search("[A-Z]", p)
t_spc = re.search("[^0-9a-zA-Z]", p)
if [t_num, t_low, t_upp, t_spc].count(None) > 1:
return False
sub_str_list = []
for i in range(0, len(p)-3):
sub_str_list.append(p[i:i+3])
if len(set(sub_str_list)) != len(sub_str_list):
return False
return True
for line in sys.stdin:
line = line.strip()
if check(line):
print("OK")
else:
print("NG")
