字串模式匹配 BF演算法和RK演算法

2021-09-28 14:58:13 字數 813 閱讀 3272

bf演算法(暴力匹配演算法,也叫樸素匹配演算法).效能不是很高。
我們在主串中,檢查起始位置分別是0.1.2…n-m且長度為n-m+1個子串,看有沒有跟模式串匹配的。(在a中查詢b,a就是主串,b就是模式串,且a>b)。最壞的時間複雜度為o(n*m),

但是實際上,這也是常用的,1.模式串和主串的長度都不會太長,2.演算法思想簡單,**實現簡單。

package jike;

public class bf

//最大需要匹配的次數

int frequency = size1 - size2 + 1;

//字串開始匹配,對patterncode和strcode開始比較,並更新strcode的值

for (int i = 0; i < frequency; i++)

//更新strcode的值,即計算str[i+1,i+m-1]子串的hashcode

strcode = ((strcode - h*(str.charat(i)-'a'))*d + str.charat(i+size2) - 'a');

}return -1;

}/**

* hash值一樣並不能完全確保字串一致,所以還需要進一步確認

* @param i hash值相同時字串比對的位置

*/private static boolean ensurematching(int i, string str, string pattern)

public static void main(string args)

}

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

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

字串模式匹配演算法 BF演算法

include include intbf char str1,char str2,int length1,int length2,int pos int main 字串模式匹配演算法 str1為主串,str2為子串 length1為主串長度,length2為子串長度,intbf char str1...

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

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