思路清晰,并不复杂,用程序表达就行了
``` python []
while True:
try:
s=str(input())
flag="OK"
#1、先排除长度大于2的公共元素字串
#搞一个指针
for i in range(len(s)):
for j in range(1+i,len(s)+1):
if j-i>2 and s.count(s[i:j])>=2:
#print(s[i:j])#测试用拿021Abc9Abc1测试应该输出的就是ABC了
flag="NG"#解决子元素重复项
#print(flag)#拿021Abc9Abc1测试是否输出NG
#2、筛选长度超过8位的
if len(s)<=8:
flag="NG"
#3、最后再解决四种至少3种,写4个flag就行了
flagU=0#大写flag判断位
flagL=0#小写flag判断位
flagD=0#数字flag判断位
flagT=0#特殊符号判断位
for i in s:#一个循环遍历
if i.isupper():#大写判断
flagU=1
if i.islower():#小写判断
flagL=1
if i.isdigit():#数字判断
flagD=1
if i in "!~@#$%^&*-+_=":#特殊字符判断,可能不全,到时候再看
flagT=1
count=flagU+flagL+flagD+flagT
if count<3:#至少3种
flag="NG"
print(flag)
except:
break