KMP算法是主要用來做字符串的匹配,有一個文本次T和一個模式串P,就是拿模式串P去匹配文本串T。 匹配的步驟分為兩步,先做模式串自身匹配,即求出next數組;然后在進行T與P的匹配。 那么可能會問,為什么要做模式串自身匹配,這么做的優(yōu)點體現在哪里?next數組到底是干啥的?它的含義是什么?   怎么求next數組? T與P的匹配過程具體是怎么操作的?

KMP算法講解視頻(非常好)

KMP算法,具體誰發(fā)明的就不說了,它主要的用途就是查找字符串,查找字符串"ab"(目標字符串)在字符串"abc"(待查找字符串)中出現的位置。換句話說,就是查找字符串"abc"是否包含字符串"ab",如果包含,返回包含的起始位置

如下兩個字符串:

str = "dabxabxababxabwabxad" (待查找字符串)

ptr = "abxabwabxad" (目標字符串)

需要計算str中是否含有ptr,如果有,返回str中出現的起始位置,如果沒有,返回-1

通過肉眼觀察我們發(fā)現,str中是包含ptr的


郵箱
huangbenjincv@163.com

墨竹工卡县| 邢台县| 突泉县| 通辽市| 杂多县| 黄陵县| 桂阳县| 广州市| 万荣县| 长汀县| 中卫市| 自贡市| 固原市| 柳河县| 崇州市| 延边| 台中县| 固原市| 西林县| 璧山县| 雷州市| 胶南市| 灵璧县| 武安市| 玛沁县| 民县| 沂南县| 秦皇岛市| 沙雅县| 五华县| 建平县| 福贡县| 慈溪市| 石河子市| 涟源市| 铁岭县| 隆子县| 瑞昌市| 乐东| 鄂州市| 靖西县|