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 }
1package 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的第二個字元 若不...