給定一個單詞,我們也可以生成編輯距離爲K的單詞列表。 比如給定 str="apple",K=1, 可以生成“appl”, "appla", "pple"...等 下面看怎麼生成這些單詞。 還是用英文的例子來說明。 仍然假設有三種操作 - 插入,刪除,替換
def generate_edit_one(str):
"""
給定一個字符串,生成編輯距離爲1的字符串列表。
"""
letters = 'abcdefghijklmnopqrstuvwxyz'
splits = [(str[:i], str[i:])for i in range(len(str)+1)]
inserts = [L + c + R for L, R in splits for c in letters]
deletes = [L + R[1:] for L, R in splits if R]
replaces = [L + c + R[1:] for L, R in splits if R for c in letters]
#return set(splits)
return set(inserts + deletes + replaces)
print (len(generate_edit_one("apple")))