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

如何简化实现单编辑距离字符串判定?禁用def、lambda、enumerate

不使用lambda、enumerate实现单编辑距离判定

当然可以,用最基础的字符串遍历和条件判断就能实现,完全不需要lambda、enumerate这类语法,逻辑更直白,代码也更简洁:

# 示例实现(若要封装成函数,仅保留核心逻辑即可,这里展示无额外语法糖的写法)
first = "pale"
other = "ple"

# 先过滤长度差超过1的情况
len_diff = len(first) - len(other)
if abs(len_diff) > 1:
    is_one_edit = False
else:
    idx = 0
    # 手动遍历找第一个不同的字符位置
    while idx < min(len(first), len(other)) and first[idx] == other[idx]:
        idx += 1
    # 根据长度差处理剩余字符串的匹配
    if len_diff == 0:
        # 长度相同,需替换当前字符,比较剩余部分
        is_one_edit = first[idx+1:] == other[idx+1:]
    elif len_diff == 1:
        # first更长,需删除当前字符,跳过first的当前位置
        is_one_edit = first[idx+1:] == other[idx:]
    else:
        # other更长,需插入字符,跳过other的当前位置
        is_one_edit = first[idx:] == other[idx+1:]

print(is_one_edit)  # 输出 True

核心逻辑说明

  1. 长度差预判:如果两个字符串长度差的绝对值大于1,直接判定不满足单编辑距离。
  2. 手动遍历找差异点:用while循环逐个比较字符,直到找到第一个不同的位置,或者遍历完较短字符串的所有字符。
  3. 分情况匹配剩余字符串:
    • 长度相同:只需验证跳过当前差异字符后,剩余部分是否完全一致(对应替换操作)。
    • 长度差为1:较长字符串跳过当前差异位置后,和较短字符串剩余部分一致即可(对应删除/插入操作)。

这个实现没有依赖任何语法糖,完全用基础的循环和条件判断完成,可读性和效率都和原代码相当,甚至更直观。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 02:35:18