给定两个字符串 S 和 T, 判断T是否可以通过对S做刚好一次编辑得到。每次编辑可以选择以下任意一个操作:
例1:
输入: s = "aDb", t = "adb" 输出: true
例2:
输入: s = "ab", t = "ab" 输出: false 解释: s=t ,所以他们不相差一次编辑的距离
分情况考虑,插入和删除 + 替换情况
class Solution: """ @param s: a string @param t: a string @return: true if they are both one edit distance apart or false """ def isOneEditDistance(self, s, t): # write your code here #分三种情况,一个是插入,一个是删除,一个是替换 len1, len2 = len(s), len(t) if (abs(len1 - len2) > 1): return False if (s == t): return False left = 0 #如果是插入的话 if (len1 < len2): return self.isOne(s, t) elif (len1 > len2): return self.isOne(t, s) else: count = 0 while left < len1: if s[left] != t[left]: count +=1 left += 1 return False if (count > 1) else True def isOne(self, s, t): length = len(s) left = 0 #同时走,当走到不同的时候停止 while left < length: if s[left] != t[left]: #此时指向右一个 break left += 1 return s[left: ] == t[left + 1: ]