数据结构速成--串

        由于是速成专题,因此内容不会十分全面,只会涵盖考试重点,各学校课程要求不同 ,大家可以按照考纲复习,不全面的内容,可以看一下小编主页数据结构初阶的内容,找到对应专题详细学习一下。  

目录

一、串的基本概念

二、串的简单模式匹配算法(BF算法) 

三、KMP算法


一、串的基本概念

        串是由零个或多个字符组成的有限序列。一般表示为下面这种形式:

        其中,S是串名,单引号括起来的字符序列是串的值;a_{i}可以是字母、数字或其他字符;串中字符的个数称为串的长度。n=0时的串称为空串。
        串中任意个连续的字符组成的子序列称为该串的子串,包含子串的串相应地称为主串。

        某个字符在串中的序号称为该字符在串中的位置。子串在主串中的位置以子串的第一个字符在主串中的位置来表示。

        当两个串的长度相等且每个对应位置的字符都相等时,称这两个串是相等的。

        由一个或多个空格组成的串称为空格串,其长度为串中空格字符的个数。 

二、串的简单模式匹配算法(BF算法) 

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

例:假设主串为a b a b c a b c a c b a b,子串为a b c a c。

         与线性表相比,串的一系列操作最显著的特点就是通常会把串作为整体进行操作

三、KMP算法

        KMP算法与BF算法最大的区别就是,KMP算法中i不会后退,而BF算法的i后退,如上面例子中第一趟i=3与j=3不匹配,此时i后退到i=2的位置。而KMP算法里,i要么保持不动要么往前走。

        想要学会KMP算法,就两步:先学会求next[j],再明白KMP算法的比较逻辑。

        关于怎样求next[j],大家可以看一下这个视频:KMP算法计算next函数值

        学会怎样计算后,再来学习KMP算法的基本逻辑:KMP 算法讲解(该视频只需观看1:17--3:17的内容)。

练手题:

下面直接给出答案:
        next函数值:01122312

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值