【发布时间】:2020-12-08 01:38:33
【问题描述】:
我一直在做大量的算法学习和实践,我遇到了一个问题(在这里总结)“给定两个字符串,如果字符串是一个编辑就返回 True(通过删除、插入, 或替换字符)。如果不是,则返回 False。”
我通过比较两个字符串并计算 string1 中的字母数量来解决这个问题,而不是 string2 中的字母数量。如果缺少一个以上的字母,则返回 False。
这是我的 Python 代码:
def oneAway(string1, string2):
string1 = string1.lower()
string2 = string2.lower()
# counts the number of edits required
counter = 0
for i in string1:
if i not in string2:
counter += 1
if counter > 1:
return False
else:
return True
我想听听其他人解决这个问题的方法,如果我过度简化了这个概念,请指出。
【问题讨论】:
-
如果你打电话给
oneAway('abcde', 'edcba')会发生什么?这些肯定不相同,并且有很多编辑分开? -
考虑两个字符串具有相同字符但排列不同的情况。在字符串超过 1 次编辑的情况下,您的算法将返回 True。
-
对你们俩:这是真的。当我最初想到它时,我没有意识到这一点。
-
作为提示,问题是“字符串是否可以编辑?”意味着该方法应该不是“首先找到编辑距离,然后将该数字与 1 进行比较”(如果是,问题将只是“编辑距离是多少?”)。您可以逐个字符比较字符串,一旦发现差异,您可以进行一次编辑(提示:检查字符串长度),然后确保其余字符串相同,即需要 0 次额外编辑.
-
@thatotherguy 我喜欢这种方法。谢谢你的回复
标签: python string algorithm edit