面试题 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 协议 ,转载请注明出处!