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