技术问询:修正Python代码以输出字符串首个k长度全相同字符子串
问题与代码修正
需求说明
给定字符串my_string和正整数k,编写代码实现:
- 输出字符串中首个长度为
k、所有字符均相同的子串(大小写敏感) - 若不存在该子串(包括字符串为空的情况),输出对应错误信息
示例:
- 输入
my_string="abaadddefggg"、k=3,输出:For length 3, found the substring ddd! - 输入
k=9,输出:Didn't find a substring of length 9
用户原代码(存在问题)
my_string = 'abaadddefggg' k = 3 s='' for i in range(len(my_string) - k + 1): if my_string[i:i+k] == my_string[i] * k: s = my_string[i:i+k] if len(s) > 0: print(f'For length {k}, found the substring {s}!') else: print(f"Didn't find a substring of length {k}")
问题分析
原代码的问题在于:循环遍历过程中,每找到一个符合条件的子串就会覆盖变量s,最终s保存的是最后一个匹配的子串,而非第一个。
修正后的代码
my_string = 'abaadddefggg' k = 3 s = '' # 处理k大于字符串长度的边界情况 if k > len(my_string): print(f"Didn't find a substring of length {k}") else: for i in range(len(my_string) - k + 1): current_sub = my_string[i:i+k] if current_sub == my_string[i] * k: s = current_sub break # 找到第一个匹配项后立即终止循环 if s: print(f'For length {k}, found the substring {s}!') else: print(f"Didn't find a substring of length {k}")
修正说明
- 新增边界判断:当
k大于字符串长度时,直接输出错误信息,无需进入循环 - 找到第一个符合条件的子串后,通过
break语句立即终止循环,避免后续遍历覆盖结果 - 提取
current_sub变量,让代码逻辑更清晰
内容的提问来源于stack exchange,提问作者Libi
相关产品推荐
相关产品推荐

