面试题 01.05. 一次编辑

一次编辑

题目描述:

字符串有三种编辑操作:插入一个字符、删除一个字符或者替换一个字符。 给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。

示例 1:

输入:
first = “pale”
second = “ple”
输出: True

示例 2:

输入:
first = “pales”
second = “pal”
输出: False

思路:

时间复杂度:O(n),空间复杂度O(1)

不是动态规划,只要条件判断就行

代码:

func oneEditAway(first string, second string) bool {
    dif := 0
    if first == second{
        return true
    }else if len(first) == len(second){
        for i:=0;i<len(first);i++{
            if first[i] != second[i]{
                dif++
            }
        }
        if dif >=2 {
            return false
        }else{
            return true
        }
    }else if int(math.Abs(float64(len(first)-len(second)))) >=2{
        return false
    }else{
        // 确保first长
        if len(second)>len(first){
            first,second = second, first
        }
        for i:=0;i<len(first);i++{
            tmp := string(first[0:i])+string(first[i+1:])
            if tmp == second{
                return true
            }
        }
        return false
    }
}

代码效率:

执行用时:0 ms, 在所有 Go 提交中击败了100.00%的用户
内存消耗:2.3 MB, 在所有 Go 提交中击败了100.00%的用户


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!