C 資料結構之字串的KMP演算法

2021-06-26 08:05:59 字數 370 閱讀 9201

我的前一篇部落格寫的是有關bf演算法的分析,但其效率比較低下,因為它是要每次不匹配的話,就要將子字串從頭開始與主字串的下乙個位置進行匹配對照,其實根據子字串(也稱之為目標字串)的特點,就可以減去一些沒必要的匹配,從而產生了kmp演算法,從而引出了著名的next陣列,它是用來儲存在某個位置不匹配時目標字串應該從哪個位置開始進行匹配,其基本演算法如下:

void get_next(string t, int *next)

else

j=next[j];

} if(j>t[0])

return i-t[0];

else

return 0;

}

上面是kmp方法的實現

資料結構 字串(BF演算法 KMP演算法)

串的定義 串 string 是計算機資訊處理中最常見的一種資料結構,是有限的字串行,記作 s a1a2a3 an 其中s是串名,雙引號之間的字串行為串的值,雙引號是串的分界符,並不是串的成分。其中 ai 1 i空串 空格串和子串 空串 由零個字元組成的串,通常為兩個相鄰的雙引號來表示空串,例如 s ...

資料結構 字串匹配KMP

kmp主要用於字串匹配 關鍵在於next陣列的求解,當匹配不成功的時候模式串的回退位置就由next陣列決定。next陣列只與主串有關,其求解過程就運用到了kmp思想,求解過程網上很多,個人覺得比較難以理解。next陣列應用,下標從1開始 字首與字尾的最大匹配長度,next i 為字首與字尾的最長匹配...

資料結構演算法之字串

字串是由若干個字元組成,在c c 中常常使用 0 字元作為結尾,這樣很方便的為我們查詢到字串的最後乙個字元。為了節省空間,c c 常常將字串單獨放到乙個記憶體空間中,當幾個指標賦予相同的變數時,實際上他們會指向相同的位址空間 實現乙個函式將字串中的空格替換成 20 實現方式 方式一 如果是建立新的字...