One Edit Distance
题目描述
Given two strings S and T, determine if they are both one edit distance apart.
解题方法
这道题目和edit distance是相关的,one edit有三种可能的操作
- Insert a character
 - Delete a character
 Replace a character
首先是长度差距不能超过1
- 如果长度差距是1的花,insert和delete其实是一样的,就是长的那个string delete一个字符
 - 长度相等的时候,它们相对应位置字符不同的个数不能多于1
 
Solution
class Solution(object):
    def isOneEditDistance(self, s, t):
        """
        :type s: str
        :type t: str
        :rtype: bool
        """
        lengthS = len(s)
        lengthT = len(t)
        diff = abs(lengthS - lengthT)
        if diff > 1:
            return False
        elif diff == 1:
            if lengthS > lengthT:
                for i in range(lengthS):
                    tmp = s[0:i] + s[i+1:]
                    if tmp == t:
                        return True
            else:
                for i in range(lengthT):
                    tmp = t[0:i] + t[i+1:]
                    if tmp == s:
                        return True
            return False
        else:
            if s == t:
                return False
            diffNum = 0
            for i in range(lengthS):
                if s[i] != t[i]:
                    if diffNum == 0:
                        diffNum += 1
                    else:
                        return False
            return True