字符串处理 —— 单模式匹配 —— 朴素的字符串匹配算法(BF 算法)
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                字符串处理 —— 单模式匹配 —— 朴素的字符串匹配算法(BF 算法)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                【算法流程】
樸素的字符串匹配算法即暴力匹配算法(BF,Brute Force),其本質是暴力枚舉,主要特點有:
很顯然,樸素的字符串匹配算法是最原始的算法,它通過循環來檢查在范圍 n-m+1 中是否存在滿足條件?P[1..m] = T [s + 1..s + m] 的有效位移 s。
在上圖中,對于文本 T=acaabc 和模式 P=aab,將模式 P 沿著 T 從左到右滑動,逐個比較字符以判斷模式 P 在文本 T 中是否存在,可以看出,該算法沒有對模式 P 進行預處理,所以預處理的時間為 0,而匹配的時間復雜度在最壞情況下為 O((n-m+1)m),如果 m=n/2,則時間復雜度為 O(n^2)。
【實現】
char t[N];//文本 char p[N];//模式 int naiveStringMatcher() {int tLen=strlen(t);//文本串的長度int pLen=strlen(p);//模式串的長度int i=0;//主串的位置int j=0;//模式串的位置while(i<tLen&&j<pLen){if(t[i]==p[i]){//當兩字符相同時,比較下一個i++;j++;}else{//當兩字符串不同時i=i-j+1;//i從上一個開始匹配點向后一位j=0;//j歸零}}if(j==pLen)//最終當模式串的位置與模式串的長度相同時,說明匹配成功return i-j;//返回匹配位置else//匹配失敗return -1;//返回-1 }?
總結
以上是生活随笔為你收集整理的字符串处理 —— 单模式匹配 —— 朴素的字符串匹配算法(BF 算法)的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: C++语言基础 —— STL —— 算法
- 下一篇: 平衡的阵容(洛谷-P2880)
