数据结构学习笔记四(串)

串的定义:由零个或多个字符组成的有限序列,又称字符串。

1.串的比较

对于字符串的比较是根据每个字符的ASCII码比较的,比如 s="happen",t="happy",因为两个字符串前面4个字母相同,而第一串的第5个字符的ASCII码值是101,第二串是121 ,很明显101<121  所以s

2.朴素的模式匹配算法

找到一个单词在一篇文章(大字符串)中的定位,这种子串的定位操作通常被称为串的模式匹配,是串中最重要的操作。

比如在 “abdabc”中找 abc,简单来说,就是对主串的每一个字符作为子串的开头,循环匹配。

 

数据结构学习笔记四(串)_第1张图片

这种匹配方式的效率

最好的情况:  “abcabd” 与“abc”  一开始就找到了,时间复杂度为O(1)

其次:“dddabc” 与“abc”  首字母都不匹配就不用对子串循环匹配,时间复杂度O(n+m)   n为主串长度 m子串长度

极端情况  “000000000000000000000001”与 “000000001”,每次匹配都匹配到子串的最后一个字符才发现不对,时间复杂度O[(n-m+1)*m] 

3.KMP模式匹配算法

由于朴素匹配算法的低效,于是有三位前辈 D.E.Knuth、J.H.Morris和V.R.Pratt发表了一个模式匹配算法,可以大大避免重复遍历的情况,我们称为克努特—莫里斯—普拉特算法,简称KMP算法。

 

你可能感兴趣的:(数据结构笔记)