bf演算法,即暴風(brute force)演算法,是普通的模式匹配演算法,bf演算法的思想就是將目標串s的第乙個字元與模式串t的第乙個字元進行匹配,若相等,則繼續比較s的第二個字元和 t的第二個字元;若不相等,則比較s的第二個字元和t的第乙個字元,依次比較下去,直到得出最後的匹配結果。bf演算法是一種蠻力演算法。這裡我們來詳細講一下 演算法的核心思想
1.從主串第乙個字元開始匹配但是我們想過是否指向子串的指標j 與 指向主串的指標i 是否始終存在一種對應關係?2.如果找到匹配的 ——》 繼續逐個尋找後面是否與子串匹配 ——》全部匹配 指標調回第乙個位置(指標回溯) 返回匹配的位置
3.始終未找到匹配的 ——》 返回未找到的標識
因此可以簡化搜尋**
下面我們使用bf演算法匹配並且對比之前的匹配演算法int i = pos , j = 1; //i為開始尋找的位置
while(i <= slen && j <= tlen)
if(slen[i] == tlen[j])
else
if(j > tlen)//未搜尋到
return i - tlen;
return 0;
}
之前演算法
bf演算法}
// 尋找從pos開始子串在父串中的位置 返回位置
int index_heapstring(hstring * parent , hstring * child , int pos)
else
} free(substr);
return 0;
}
//暴風演算法實現返回子串在主串的位置
int bfcompare(hstring * parent,hstring * child,int pos)
else
}if(j > child->length)
return 0;
}
BF演算法 串的模式匹配演算法
子串的定位運算通常稱為串的模式匹配或串匹配。串的模式匹配設有兩個字串s和t,設s為主串,也稱正文串 設t為子串,也稱模式。在主串s中查詢與模式t相匹配的子串,如果匹配成功,確定相匹配的子串中的第乙個字元在主串s 現的位置。著名的模式匹配演算法有bf演算法和kmp演算法,下面介紹bf演算法。模式匹配不...
串的模式匹配演算法 BF演算法詳解
二 時間複雜度 三 c 實現 bf演算法是一種蠻力演算法,其實現過程沒有任何技巧,就是簡單粗暴地拿乙個串同另乙個串中的字元一一比對,得到最終結果。演算法目的 確定主串中所含子串第一次出現的位置,這裡的子串也稱為模式串。1 主串和模式串逐個字元進行比較 2 當出現字元不匹配 失配 時,主串的比較位置重...
串的模式匹配演算法之BF演算法
演算法的基本思想是 從主串s的第pos個字元起和模式的第乙個字元比較,若相等,則繼續逐個比較後續字元 否則從主串的下乙個字元起再重新和模式的字元比較。依次類推,直至模式t中的每個字元依次和主串s中的乙個連續的字串行相等,則稱匹配成功,函式值為和模式t中的每個字元依次和主串s中的序號,否則稱匹配不成功...