王道408---DS---串

主要内容就是KMP算法

KMP

串的一些基本概念

1、子串/模式串

串中任意多个连续的字符组成的子系列叫做字串

2、主串

包含字串的串称为主串

3、模式匹配(pattern matching)

字串的定位操作称为串的模式匹配,是求子串在主串中的位置

算法

参考: https://www.bilibili.com/video/BV19C4y157dH/?spm_id_from=333.999.0.0&vd_source=87f7ad8544d4c3ad070c5c2ff28b7698

image-20231213174056994

  1. 首先写出PM(Partial Match)部分匹配值
  2. 写出next数组(next数组可分为两种,一种是下标从0开始,一种是下表从1开始),需要注意的是next数组与PM数组总是错位一格
  3. 写出nextval

nextval原理如下:

image-20231022173657130

使用nextval的时候,一般会选择从下标1开始计数,否则会出现下标为-1的情况,还得额外处理,比如:

image-20231213180711020

注意点:

1、PM开局为0

2、next数组下表为0的时候,开局就是-1,且必须为负一

3、PM下标从1开始

posted @ 2023-10-29 14:15  TLSN  阅读(37)  评论(0编辑  收藏  举报