計算字串的相似度

2021-06-10 06:11:42 字數 582 閱讀 4725

程式設計之美223頁的題目。

如果他們的第乙個字元相同,那麼計算接下來的字串的距離。

如果他們的第乙個字元不同,那麼

1、刪除a的第乙個字元,計算a接下來的字串和b的距離

2、刪除b的第乙個字元,計算b接下來的字串和a的距離

3、修改a的第乙個字元為b的第乙個字元,計算a接下來的字串和b接下來的字串距離

4、修改b的第乙個字元為a的第乙個字元,計算a接下來的字串和b接下來的字串距離

5、新增a的第乙個字元到b的開頭部分,計算a接下來的字串和b的距離

6、新增b的第乙個字元到a的開頭部分,計算a和b接下來的部分的距離

我們並不關心修改、新增、刪除之後,得到的字串是什麼。僅僅關心這個距離是多少。那麼上面可以總結為:

一步修改之後,計算a[2-a.len]和b[1-b.len]的距離

一步修改之後,計算a[1-a.len]和b[2-b.len]的距離

一步修改之後,計算a[2-a.len]和b[2-b.len]的距離

於是可以有遞迴程式了。

遞迴程式寫的時候會重複計算一些內容,可以用打表的方式記錄已經計算過的內容。防止重複計算。

字串的相似度計算

一 基於編輯距離的字串相似度計算 兩個字串之間的相似度可以用編輯距離來定義。所謂編輯,指的是,對字串中的任一字元進行插入,刪除和替換這三種操作。經過一定步驟的編輯,乙個字串可以變換為另乙個字串,那麼最少的編輯步數稱為兩個字串的編輯距離。這是乙個遞迴或動態規劃的問題。比如長度分別為m,n的字串str1...

計算字串的相似度

程式設計之美 3.3節 計算字串的相似度 問題 對於給定的兩個字串,用最少的操作 插入 刪除和替換,使得兩個字串相同。找出這個最少需要操作的步數。解法 1 一步操作後,再將a 2 end 和b 2 end 程式設計相同的字串 2 一步操作後,再將a 1 end 和b 2 end 程式設計相同的字串 ...

Matlab計算字串相似度

執行環境 matlab 單純的計算字串的相似度,並沒有計算詞性,如tf idf之類的 如下 計算字串相似度 乙個source字串通過插入 刪除 替換而變成target字串的操作次數越少,則兩個字串越相近。function strsim mystrsim target,source x為字串 len1...