One Edit Distance
class Solution(object):
def isOneEditDistance(self, s, t):
"""
:type s: str
:type t: str
:rtype: bool
"""
if s == t:
return False
l1, l2 = len(s), len(t)
if l1 > l2: # force s no longer than t
return self.isOneEditDistance(t, s)
diff = l2-l1
if diff > 1:
return False
for i in xrange(l1):
if s[i] != t[i]:
# 发现不等的时候,有两种情况:1.s和t长度相同只有一个char需要替换。2.长度相差一,则增加一个t里的char
if l1 == l2:
s = s[:i]+t[i]+s[i+1:] # replacement
else:
s = s[:i]+t[i]+s[i:] # insertion
# 只处理发现的第一个不同,然后就跳出循环,然后比较
break
return s == t or s == t[:-1] # checking edge case for s ="a", t = ""Last updated