在這裡我們運用蠻力演算法解決,另外此問題還能用kmp演算法。
該演算法的做法是將模式(也就是較短的子串,長度為m)對準文字(也就是較長的字串,長度為n)的前m個字元,從左到右匹配每一對相應的字元,如果有m對字元都匹配成功,那麼演算法停止,或者當遇到有一對不匹配時就將模式向右移一位,然後繼續從模式的第乙個字元與文字進行匹配。在這個過程中,當文字剩餘字元的長度小於模式時演算法就可以停止了,因為後面的都不可能再匹配成功,因此,文字的下標達到n-m時終止。
#include
using namespace std;
#include
#include
#define maxsize 100
intforcematch
(char
*t,int n,
char
*p,int m)
//定義蠻力法}}
return-1
;}intmain()
}
時間複雜度為o(n*m) (這裡m是文字串的長度,而n是匹配串的長度)
字串匹配 蠻力 KMP
前兩篇文章是從網上搜尋的,知道了next陣列可以有多種表示方法,但感覺kmp演算法詳解裡面第二種表示法給的程式有點小問題,今天自己改進了下,然後在leetcode strstr 上驗證了下,發現自己改進的程式可以ac,證明沒有問題 現在在這篇部落格中總結蠻力 kmp bm演算法的各種ac解法 蠻力法...
字串匹配演算法 蠻力演算法 KMP演算法 BM演算法
子串 字串中任一連續的片段,稱作其子串 substring 字首 prefix s,k s.substr 0,k s 0,k 字尾 suffix s,k s.sbustr n k,k s n k,n 串模式匹配 string pattern matching 對基於同一字元表的任何文字t t n 和...
演算法系列之十二 字串匹配之蠻力匹配
引言 字串匹配是資料庫開發和文字處理軟體的關鍵。幸運的是所有現代程式語言和字串庫函式,幫助我們的日常工作。不過理解他們的原理還是比較重要的。字串演算法主要可以分為幾類。字串匹配就是其中之一。當我們提到字串匹配演算法,最基本的方法就是所謂的蠻力解法,這意味著我們需要檢查每乙個文字串中的字元是否和匹配串...