字符串同位置字符匹配函数evalFit结果错误排查求助
修复同位置字符匹配计数函数的问题
原代码的错误分析
- 使用
target.index(charac)获取索引是核心错误:该方法返回字符在target中第一次出现的位置,而非当前循环的对应位置,导致重复字符会被错误匹配到初始位置,完全偏离“同位置匹配”的需求。 - 未处理字符串长度不一致的情况:若两个字符串长度不同,原逻辑可能引发索引越界,或错误遍历超出较短字符串的部分。
正确实现方案
方案1:使用zip遍历对应字符
zip会自动配对两个字符串的对应位置字符,直到较短的字符串结束,完美适配需求:
def evalFit(indv, target): count = 0 for c_indv, c_target in zip(indv, target): if c_indv == c_target: count += 1 return count
方案2:基于索引遍历
手动控制遍历范围到两个字符串的最小长度,逐个对比对应索引的字符:
def evalFit(indv, target): count = 0 max_compare_len = min(len(indv), len(target)) for i in range(max_compare_len): if indv[i] == target[i]: count += 1 return count
测试验证
针对测试用例evalFit('ABC BA','ABCABC'),逐个位置对比:
- 位置0:A vs A → 匹配
- 位置1:B vs B → 匹配
- 位置2:C vs C → 匹配
- 位置3:空格 vs A → 不匹配
- 位置4:B vs B → 匹配
- 位置5:A vs C → 不匹配
最终计数为4,符合预期结果。
内容的提问来源于stack exchange,提问作者csGethelp
相关产品推荐
相关产品推荐

