字符串操作题解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()方法检查重复性。例如在查找重复序列、比较字符串间的差别等问题中。
- 边界处理:检查密码长度、字符种类等边界条件
- 模块化思想:将规则检查的每个部分作为独立的任务来处理(长度、种类、重复性等)
- 测试:构造边界值测试代码
算法学习分析与整理 文章被收录于专栏
个人学习算法的文档整理与思考,举一反三,相爱相杀。