BF演算法與KMP演算法 字串匹配演算法

2022-02-18 09:09:06 字數 1111 閱讀 6353

bf演算法,簡稱暴力破解 bruce force ,又稱樸素模式的匹配演算法。

可以看出bf演算法的思想就是將目標串s的第乙個字元與模式串t的第乙個字元進行匹配,

若相等,則繼續比較s的第二個字元和t的第二個字元;

若不相等,則比較s的第二個字元和t的第乙個字元,依次比較,直到得出最後的匹配結果。

這種演算法的比較很暴力,由於產生了多次的回溯,在效率上存在很大的缺陷。

時間複雜度o(m*n)

**:

1

package bf;23

public

class

test else

18if (i ==m)

19break;20

if (bf.charat(i) == pattern.charat(j) && j == n - 1

) else27}

28}29}

30 }

**:

1

package kmp;23

public

class

test

10   //計算公共前字尾,形成字首表

11static

void prefix_table(string pattern, int prefix, int

n) else

else27}

28}29}

30   //移位 ---》 next陣列

31static

void move_prefix_table(int prefix, int

n) 36 prefix[0] = 0;37

}38   // kmp演算法 依據 next陣列來匹配字串

39static

void

kmp_search(string text, string pattern)

54if (text.charat(i) ==pattern.charat(j)) else63}

64}65}

66 }

字串匹配演算法 BF及KMP

以 absababcef 與 abce 為例,求串2與串1匹配的第乙個位置的下標 這裡即輸出 5 一般的,我們可以從串1的起始位置開始與串2比較,若相同則兩串都向後移,否則,串1回到第二個位置,串2回到起始位置重新比較。本題用此方法會超時 includeint a 10001 b 10001 int...

字元字串模式匹配演算法 BF演算法與KMP演算法

需解決的問題 從主字串s中尋找子字串t出現的第乙個位置?如果出現,返回pos,否則,返回 1 一 bf演算法 bf演算法就是樸素模式匹配演算法,即暴力求解,迴圈遍歷。將子字串的每個字元和主字串的字元按順序比較,如果比較不相等時,兩個字串的索引i和j同時回退,i回退到剛才主字串起始位置的下一位,子字串...

字串模式匹配(BF演算法和KMP演算法)

字串模式匹配 在主串s中尋找子串t,若主串第i個下標開始的字串同子串t完全相同,則返回下標i,若遍歷完主串s未找到匹配,則返回 1。bf brute force 演算法 bf演算法的思想就是將目標串s的第乙個字元與模式串t的第乙個字元進行匹配,若相等,則繼續比較s的第二個字元和 t的第二個字元 若不...