這題自己想的過於複雜,其實用雙指標分別從字串的頭尾遍歷就可以了。
以下是來自leetcode題解:
分別從兩個字串的兩邊向中間匹配,一旦不一樣就停止,這時剩下的first[i,j]first[i,j]和second[i,k]second[i,k]如果長度均小於等於1(注意臨界條件)則結果為true,否則false。
時間複雜度:o(n)o(n)
空間複雜度:o(1)o(1)
public
bool
oneeditaway
(string first,
string second)
int len1=first.length;
int len2=second.length;
if(math.
abs(len1-len2)
>1)
int i=
0,j=len1-
1,k=len2-1;
while
(i==second[i]
)while
(j>=
0&& k>=
0&& first[j]
==second[k]
)return j-i<
1&& k-i<1;
}
LeetCode 字串 一次編輯
輸入 first pale second ple 輸出 true 輸入 first pales second pal 輸出 false 使用和編輯距離一樣的方法計算兩個字串的編輯距離,然後判斷編輯距離是否小於等於 1。如下 class solution if dp m n 1 return true...
判斷字串中是否所有字元都只出現過一次
參考 程式設計師 面試指南 it名企演算法與資料結構題目最優解 給定乙個字串s,判斷s中是否存在所有字元都出現過一次,根據以下兩種要求實現不同的函式。要求一 實現時間複雜度為o n 的方法 要求二 在保證額外空間複雜度為o 1 的前提下,請實現時間複雜度盡量低的方法。要求一 時間複雜度為o n 遍歷...
perl一次性替換多個串字串
最近策劃非要搞一堆一樣的指令碼,然後其中的一些效果id需要替換成別新的,這樣的id總共有50多個,替換軟體的話只能乙個乙個搞,還擔心中間搞錯了,比如,複製貼上過程中,只複製了原id,新的id沒有換,那就把原id替換成了上乙個要替換的新id.於是網上搜搜看一次性替換多個字串的方法,這個方法如下 usr...