kmp算法(十分鐘理解)

本文並不打算細說kmp算法的算法實現,而是通過幾張圖來描述kmp算法的思想。

現在我們將兩個字符串左對齊,然後依次對比每位是否相等
https://img-blog.csdn.net/20180422003112519
當遇到不匹配時需要將P整體往右移動
https://img-blog.csdn.net/20180422003113190
現在需要移動1位然後依次對比每位是否相等,不相等就又需要整體往右移1位。那可以每次儘可能的向右多移動幾位嗎?
https://img-blog.csdn.net/20180422003113856
如果我們提前就可以算出移動幾位後纔會開始匹配,這樣匹配就可以加速了。從上圖可以看出移動兩位後可以向前繼續匹配的,因爲此時前面的對應位子字符是相等的。
下圖說明了在第6位不匹配時可以向右移2位的計算過程。
https://img-blog.csdn.net/20180422003114501
針對需要查找的字符串P我們可以算出在每一位不匹配時,可以向右移動的最遠長度
https://img-blog.csdn.net/20180422003115138

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章