01 05 一次編輯

2021-10-16 05:14:50 字數 1317 閱讀 6440

開始想使用鍊錶解決,發現替換的操作不容易操作。這個陣列的splice方法確實很有幫助。

/**

* @param first

* @param second

* @return

*/var

oneeditaway

=function

(first, second)

var maxlength = diff>

0?first.length:second.length

var farray = array.

from

(first)

var sarray = array.

from

(second)

for(

var i =

0;i)else

if(diff>0)

else

break;}

}return farray.

join()

=== sarray.

join()

};

先將字串變成陣列。

使用math.abs是一種好的想法

判斷插入是乙個字元的條件

相差零個字元的話就用splice替換(全部替換)(這一點沒有想到)

最後要判斷一次字串是否相等

改進的思路

1.長度相同,判斷兩個字串對位是否相同,記錄不同次數,次數小於等於1則返回true;

2.長度差一位,先用迴圈找出長字串和短字串開始出現不同的位置,在長字串中擷取不包括該位置的後面部分與短字串包括該位置的後面部分進行比較,相同返回true。

雙指標也是乙個很好的想法

var

oneeditaway

=function

(first, second)

let len1 = first.length

let len2 = second.length

let num = math.

abs(len1 - len2)

if(num >1)

let i =

0, j = len1 -

1, k = len2 -

1while

(i===second[i]

)while

(j>-1

&& k>-1

&& first[j]

=== second[k]

)return j-i<

1&& k-i<1;

};

LeetCode 01 05 一次編輯

字串有三種編輯操作 插入乙個字元 刪除乙個字元或者替換乙個字元。給定兩個字串,編寫乙個函式判定它們是否只需要一次 或者零次 編輯。輸入 first aple second ple 輸出 true 比較字串的長度 若math.abs first.length second.length 1,返回fal...

面試題 01 05 一次編輯

字串有三種編輯操作 插入乙個字元 刪除乙個字元或者替換乙個字元。給定兩個字串,編寫乙個函式判定它們是否只需要一次 或者零次 編輯。示例 1 輸入 first pale second ple 輸出 true 分情況討論 長度差超過2 肯定錯 len1 len2 可能是替換 len1 len2 是刪除,...

面試題 01 05 一次編輯(動態規劃)

面試題 01.05.一次編輯 字串有三種編輯操作 插入乙個字元 刪除乙個字元或者替換乙個字元。給定兩個字串,編寫乙個函式判定它們是否只需要一次 或者零次 編輯。示例 1 輸入 first pale second ple 輸出 true示例 2 輸入 first pales second pal 輸出...