题目描述
密码要求:
1.长度超过8位
2.包括大小写字母.数字.其它符号,以上四种至少三种
3.不能有长度大于2的包含公共元素的子串重复 (注:其他符号不含空格或换行)
数据范围:输入的字符串长度满足 1≤n≤100
输入描述
一组字符串
输入描述
如果符合要求输出:OK,否则输出NG
代码和解题思路
\"\"\"
先声明一个用来判断密码的函数,通过调用函数来完成题目要求
\"\"\"
def check(s):
if len(s)<8:#判断长度是否符合要求
return 0
a,b,c,d=0,0,0,0#a,b,c,d分别代表一种符号
for item in s:#遍历字符串,用ascall吗来查看是否有某种类型符号
if ord(\'a\')<=ord(item)<=ord(\'z\'):
a=1
elif ord(\'A\')<=ord(item)<=ord(\"Z\"):
b=1
elif ord(\'0\')<=ord(item)<=ord(\"9\"):
c=1
else:
d=1
if a+b+c+d<3:#判断是否符合字符种类至少有三种的要求
return 0
for i in range(len(s)-3):#将字符串按分片的字符串分开,一般情况下只能分成两份,即一刀两段,如果有三段,则证明有长度大于2的包含公共元素的子串重复
if len(s.split(s[i:i+3]))>=3:
return 0
return 1
while 1:
try:
print(\'OK\' if check(input()) else \'NG\');
except:
break
来源:https://www.cnblogs.com/yzysimpletest/p/16355204.html
本站部分图文来源于网络,如有侵权请联系删除。