字串匹配 蠻力 KMP

2021-07-02 04:52:57 字數 536 閱讀 9024

前兩篇文章是從網上搜尋的,知道了next陣列可以有多種表示方法,但感覺kmp演算法詳解裡面第二種表示法給的程式有點小問題,今天自己改進了下,然後在leetcode(strstr)上驗證了下,發現自己改進的程式可以ac,證明沒有問題

現在在這篇部落格中總結蠻力、kmp、bm演算法的各種ac解法:

蠻力法:耗時6ms(cpp)

class solution else

}if(j == len2) return i;

else return -1;

}};

kmp:耗時6ms(cpp)

class solution else

}if(j == len2) return (i - j);

else return -1;

}void getnext(string needle,int next)else if(needle[j] != needle[0])else}}

};

bm演算法:

蠻力演算法字串匹配

在這裡我們運用蠻力演算法解決,另外此問題還能用kmp演算法。該演算法的做法是將模式 也就是較短的子串,長度為m 對準文字 也就是較長的字串,長度為n 的前m個字元,從左到右匹配每一對相應的字元,如果有m對字元都匹配成功,那麼演算法停止,或者當遇到有一對不匹配時就將模式向右移一位,然後繼續從模式的第乙...

字串匹配演算法 蠻力演算法 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 和...

kmp字串匹配

首先要對模式串進行預處理。預處理過程就是計算出指定位置的字首和字尾的最大相同的長度 啊啊啊啊。估計只有我乙個人能看懂 這個文章說得很清楚 比如說 a a a c b c a a a 0 1 2 0 0 0 1 2 3 void getnext int next,char par 20 int n 翻...