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

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

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

如下兩個字符串:

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

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

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

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


郵箱
huangbenjincv@163.com

南澳县| 即墨市| 惠东县| 南乐县| 石台县| 新和县| 定南县| 晋宁县| 丁青县| 沈阳市| 聂荣县| 霍城县| 嘉义市| 阜平县| 徐汇区| 托克托县| 水富县| 太保市| 息烽县| 河池市| 石棉县| 会同县| 永安市| 葫芦岛市| 峨山| 钟山县| 侯马市| 西昌市| 乳山市| 宁夏| 南漳县| 高碑店市| 同仁县| 余干县| 婺源县| 南川市| 舒兰市| 全椒县| 昌宁县| 隆德县| 抚顺市|