BM演算法查詢子字串

2021-09-10 14:01:15 字數 294 閱讀 4295

兩種模式,三種匹配狀態。

兩種模式:

文字指標i自左向右移動,模式指標自右向左移動。匹配時由pattern的字串由右向左匹配。

三種匹配失敗狀態:

1.匹配到乙個不在模式字串中的字元,將文字指標i跳躍pattern.length+1。重新匹配。

2.匹配到乙個在模式字串中的字元,將文字指標i跳躍的長度為該字元在pattern最右邊的位置,也就是將文字字串該字元和模式字串該字元對齊。重新匹配。

3.匹配到乙個在模式字串中的字元,但跳躍長度為負數,將i跳躍長度設為1。重新匹配。

字串查詢演算法 bm演算法

今天有空,認真的對比了一下經典的字串查詢演算法bm演算法和c庫查詢函式 strstr 的區別,兩者各有優缺點,總結一下 bm演算法的應用場合 適合海量資料搜尋,比如資料庫,磁碟檔案等,總之是資料量越大,效能越高 strstr,資料量較少時,比較適合,尤其是在乙個幾千位元組的字串中查詢不同的字串,這時...

字串匹配 BM演算法

bm演算法 1 三個shift函式 d1,d2,d3,函式的作用是決定當匹配不成功時視窗的移動位數。1 d1 字尾u在模式串p中的另乙個位置是最右出現位置是j 不包括在模式串尾的出現 文字串的視窗安全移動方法是將視窗移動m j字元,使文字中的u與模式串中最右邊的u的出現位置相對齊。對模式中的每個字尾...

BM演算法 字串匹配演算法

思想 使用啟發式規則,通過每次的失敗的匹配嘗試,演算法都能根據這些資訊來排除盡可能多的無法匹配的位置 為什麼說是每次呢,因為每次的情況可能不一樣,通過資訊來跳過啟發式規則的得到的步數 目的 利用啟發式規則,盡可能多跳過無法匹配的位置,從而達到更高的效率 方法 壞字元規則和好字尾規則,取其中移動步數較...