字符串操作题解02 | #密码验证合格程序#
密码验证合格程序
https://www.nowcoder.com/practice/184edec193864f0985ad2684fbc86841
while True:
try:
line = input()
if 1 <= len(line) <= 100: # 检查输入字符串长度
a=0
b=0
c=0
d=0
flag=True
for i in line:
if i.isdigit():
a=1
elif i.islower():
b=1
elif i.isupper():
c=1
else:
d=1
for j in range(len(line)-2): # 修改为 len(line)-2
if line.count(line[j:j+3])>1:
flag=False
if len(line)>8 and (a+b+c+d)>=3 and flag:
print("OK")
else:
print("NG")
else:
print("Invalid input. Palease enter a string between 1 and 100 characters")
except:
break
一、解题思路
- 理解题目:输入的字符串密码进行验证,长度、类型、重复性验证,
- 分析和处理字符串
- 长度超过8位,用len()
- 至少包含三类字符,用
str.isdigit(),str.islower(),str.isupper()检查字符类型。并设置相应的标志变量来跟踪类型。 - 长度没有超过2的字符串重复要求,遍历所有的三个字符的子串,检查每个子串在字符串中的出现次数
- 边界值
- 输入长度1,100之间
- 字符串类型数
- 重复字符串
- 测试返回
- 对于某个条件缺失的字符串,结果应为 "NG"。
- 对于一个符合所有要求的字符串,结果应为 "OK"。
二、举一反三
- 条件检查:通过遍历字符串isdigit、isupper、islower验证数字、大写、小写
- 子串与重复性检测:遍历所有可能长度为3的子串,并使用count()方法检查重复性。例如在查找重复序列、比较字符串间的差别等问题中。
- 边界处理:检查密码长度、字符种类等边界条件
- 模块化思想:将规则检查的每个部分作为独立的任务来处理(长度、种类、重复性等)
- 测试:构造边界值测试代码
算法学习分析与整理 文章被收录于专栏
个人学习算法的文档整理与思考,举一反三,相爱相杀。
查看27道真题和解析