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

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

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

如下兩個(gè)字符串:

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

ptr = "abxabwabxad" (目標(biāo)字符串)

需要計(jì)算str中是否含有ptr,如果有,返回str中出現(xiàn)的起始位置,如果沒有,返回-1

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


郵箱
huangbenjincv@163.com

抚松县| 汪清县| 泽州县| 汝南县| 永城市| 邯郸县| 大洼县| 定边县| 彭山县| 泗洪县| 治多县| 繁昌县| 罗城| 桐梓县| 南开区| 蕉岭县| 汉川市| 达日县| 朔州市| 河东区| 隆昌县| 凉城县| 伊吾县| 霍城县| 本溪| 来凤县| 琼海市| 古田县| 通道| 图木舒克市| 炉霍县| 福清市| 兴城市| 巴南区| 越西县| 万源市| 高雄县| 无棣县| 监利县| 巧家县| 卢湾区|