串的模式匹配演算法1 BF演算法

2021-09-23 22:37:47 字數 709 閱讀 8671

字串的模式匹配不一定要從主串的第乙個位置開始,可以指定主串中查詢的起始位置 pos。

2. 演算法步驟:

1)分別利用計數器指標 i 和 j 指定主串和模式串即小字串待比較的位置,初始化為 1.

2) 如果兩個串均為比較到串尾,就進行以下操作,s[ i ] 和 t[ j ] 進行比較,若相等,指標後移,繼續匹配,若不等,指標後退,重新開始匹配。從主串的下乙個字串開始,i = i - j +2;

話不多說,直接上**

package softcolledge.test;

public class bftest else }

public static boolean bf(string s,string t,int pos)

}

bf演算法易於理解,再次要考慮兩個極端情況,在最好的情況下,設主串長度為n,子串長度是m,假設主串與模式串比較 i-1 次。也即是第 i 次比較成功了。若第i趟成功比較的字串次數為 m 則總的次數是 i-1 + m。對於成功匹配的主串,其起始位置由1到 n-m+1 ,最好的情況下平均匹配次數是

1/n-m+1 * (從i=1到 i=n-m+1)求和 i-1+m = 1/2(n+m);在最壞情況下:例如,s=「aaaaaaab」;

t=「ab」; 這時前i-1 趟比較了 (i-1) * m次,因此最壞情況下平均匹配次數是o(n*m).

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

子串的定位運算通常稱為串的模式匹配或串匹配。串的模式匹配設有兩個字串s和t,設s為主串,也稱正文串 設t為子串,也稱模式。在主串s中查詢與模式t相匹配的子串,如果匹配成功,確定相匹配的子串中的第乙個字元在主串s 現的位置。著名的模式匹配演算法有bf演算法和kmp演算法,下面介紹bf演算法。模式匹配不...

BF演算法 串的模式匹配

bf演算法,即暴風 brute force 演算法,是普通的模式匹配演算法,bf演算法的思想就是將目標串s的第乙個字元與模式串t的第乙個字元進行匹配,若相等,則繼續比較s的第二個字元和 t的第二個字元 若不相等,則比較s的第二個字元和t的第乙個字元,依次比較下去,直到得出最後的匹配結果。bf演算法是...

串的模式匹配演算法 BF演算法詳解

二 時間複雜度 三 c 實現 bf演算法是一種蠻力演算法,其實現過程沒有任何技巧,就是簡單粗暴地拿乙個串同另乙個串中的字元一一比對,得到最終結果。演算法目的 確定主串中所含子串第一次出現的位置,這裡的子串也稱為模式串。1 主串和模式串逐個字元進行比較 2 當出現字元不匹配 失配 時,主串的比較位置重...