字符串匹配算法:KMP
Knuth–Morris–Pratt(KMP)算法是一種改進的字符串匹配算法,它的核心是利用匹配失敗後的信息,儘量減少模式串與主串的匹配次數以達到快速匹配的目的。它的時間複雜度是 O(m+n)
。
一般來說,暴力匹配時:
我們在進行每一輪匹配時,總是會重複對 A 進行比較。也就是說,對於 S 中的每個字符,我們都需要從 T 第一個位置重新開始比較,並且 S 前面的 A 越多,浪費的時間也就越多。假設 S 的長度爲 m,T 的長度爲 n,理論上講,最壞情況下迭代 m - n + 1
輪,每輪最多進行 n 次比對,一共比較了 次,當 時,漸進時間複雜度爲 。
力扣卡片解析→KMP