日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

字符串处理:布鲁特--福斯算法

發(fā)布時間:2024/4/14 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 字符串处理:布鲁特--福斯算法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

基本思想:

其基本思想是從主串的第一個字符起與模式串的第一個字符比較,若相等,則繼續(xù)逐個字符的后續(xù)比較,否則從主串的第二個字符起與模式串的第一個字符重新開始比較,直至模式串中的每個字符依次和主串中的一個連續(xù)的字符序列相等時為止,此時稱為匹配成功,否則稱為匹配失敗。

以字符數(shù)組存儲字符串,實現(xiàn)樸素的模式匹配算法。

1 int Index(char S[], char T[], int pos) 2 /*查找并返回模式串T在主串S中從pos開始的位置(下標(biāo)),若T不是S的子串,則返回-1 */ 3 { 4 i = pos; j=0; // i , j 分別用于指示出主串字符和模式串字符的位置(下標(biāo)) 5 slen = strlen(S); tlen = strlen(T); //計算主串和模式串的長度 6 while(i < slen && j <tlen) 7 { 8 if(S[i] == T[j]) 9 { 10 i++;j++; 11 } 12 else 13 { 14 i = i - j + 1; //主串字符的位置指針回退 15 j = 0; 16 } 17 } 18 if(j >= tlen) //匹配成功 19 return i - tlen; 20 return -1; //匹配失敗,返回 - 1 21 }

時間復(fù)雜度:

在最好的情況下匹配算法的時間復(fù)雜度為O(n + m).最壞的情況下的時間復(fù)雜度為O( n?× m),對該算法進行改進的模式匹配算法又稱為KMP算法,其改進之處在于:每當(dāng)匹配過程中出現(xiàn)相比較的字符不相等時,不需要回溯主串字符的位置指針。而是利用已經(jīng)得到的“部分匹配”的結(jié)果,將模式串向后“滑動”盡可能遠的距離,再繼續(xù)進行比較。

轉(zhuǎn)載于:https://www.cnblogs.com/xiehuan-blog/p/9011782.html

總結(jié)

以上是生活随笔為你收集整理的字符串处理:布鲁特--福斯算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。