程式設計師面試金典 面試題01 05 一次編輯

2021-10-13 09:55:36 字數 1285 閱讀 4520

本題可以轉化為求編輯距離。題目限定為可以插入、刪除、替換乙個字元,這種編輯距離稱為萊溫斯坦距離,同樣經常遇到的還有漢明距離等。

字串有三種編輯操作:插入乙個字元、刪除乙個字元或者替換乙個字元。 給定兩個字串,編寫乙個函式判定它們是否只需要一次(或者零次)編輯。

示例 1

:輸入:

first =

"pale"

second =

"ple"

輸出: true

示例 2

:輸入:

first =

"pales"

second =

"pal"

輸出: false

演算法根據下圖所示遞推公式實現:

具體解法如下:

int

edit_distance

(char*,

char*)

;int

min_two

(int

,int);

intmin_three

(int

,int

,int);

bool oneeditaway

(char

* first,

char

* second)

intedit_distance

(char

* first,

char

* second)

for(j=

0;j<

(len_second+1)

;j++

)for

(i=1

;i<

(len_first+1)

;i++

)else

d[i]

[j]=

min_three

( d[i-1]

[j]+1,

d[i]

[j-1]+

1,d[i-1]

[j-1

]+cost

);}}return d[len_first]

[len_second];}

intmin_two

(int a,

int b)

intmin_three

(int a,

int b,

int c)

程式設計師面試金典 面試題 01 05 一次編輯

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

程式設計師面試金典 面試題 08 09 括號

括號。設計一種演算法,列印n對括號的所有合法的 例如,開閉一一對應 組合。說明 解集不能包含重複的子集。例如,給出 n 3,生成結果為 dfs搜尋,如果當前左括號用超了,右括號用超了,或者右括號的數量大於左括號的數量直接返回。而如果左右括號剛好用盡,代表生成乙個結果,記錄下來。然後就是遞迴,新增左括...

程式設計師面試金典 面試題 08 13 堆箱子

堆箱子。給你一堆n個箱子,箱子寬 wi 高hi 深di。箱子不能翻轉,將箱子堆起來時,下面箱子的寬度 高度和深度必須大於上面的箱子。實現一種方法,搭出最高的一堆箱子。箱堆的高度為每個箱子高度的總和。輸入使用陣列 wi,di,hi 表示每個箱子。示例1 輸入 box 1,1,1 2,2,2 3,3,3...