You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

技术问询:修正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}")

修正说明

  1. 新增边界判断:当k大于字符串长度时,直接输出错误信息,无需进入循环
  2. 找到第一个符合条件的子串后,通过break语句立即终止循环,避免后续遍历覆盖结果
  3. 提取current_sub变量,让代码逻辑更清晰

内容的提问来源于stack exchange,提问作者Libi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 08:05:22