Python裁剪字符串开头使等长后拼接的代码问题排查
问题根因
代码的问题出在Python对-0索引的处理逻辑上:Python中-0等价于0,当其中一个输入字符串长度为0时,比如调用removeStart("", "Hello"),会进入len(a) < len(b)的分支,len(a)为0,b[-len(a):]就等价于b[0:],也就是完整的"Hello",最终拼接结果就是"" + "Hello" = "Hello",不符合预期。
修复方案
你可以直接简化逻辑,先计算两个字符串的最小长度,再统一通过偏移量取两个字符串末尾对应长度的部分拼接即可,不需要单独写多分支判断,天然覆盖长度为0的场景:
def removeStart(a, b): min_len = min(len(a), len(b)) return a[len(a) - min_len:] + b[len(b) - min_len:]
该逻辑的验证效果:
- 两个字符串长度相等时,
min_len等于字符串本身长度,取全部内容拼接,符合要求 - 其中一个字符串更长时,从长度差的位置开始取切片,等价于裁剪开头保留末尾
min_len位,符合需求 - 其中一个字符串长度为0时,
min_len为0,取对应切片得到的是空字符串,拼接结果为空,符合测试用例要求。
内容的提问来源于stack exchange,提问作者user17144102
相关产品推荐
相关产品推荐

