串的定义:零个或多个字符组成的有限序列,又称字符串。
1.串的比较
比较字符串之间的ASCII码的大小, 比如s="happy",t="happen",因为前面4个字母相同,所以比较第五位的字母的ASCII码值,
y的ASCII码值是121,e的ASCII码值是101,121>101所以串s>t. 英语词典就是按着这样排列的。
2.朴素的模式匹配算法
在一篇文章中找一个单词,这种子串的定位操作通常称为串的模式匹配。
对主串的每一个字符作为子串开头,与要匹配的字符串进行匹配,对主串大循环,每个字符开头做子串长度的小循环,直到匹配成功或全部遍历完成
最好的情况比如 “abcabd”与“abc”第一次就匹配到了,时间复杂度为O(1)
其次就是上图的情况:时间复杂度为O(n+m) n为主串长度 m 子串长度
极端情况: “0000000000000000000000000001”与“000000000001”,每次匹配时,都要循环到子串的最后一位才发现不匹配
时间复杂度 O[(n-m+1)*m]
3.KMP模式匹配算法
由于朴素模式匹配算法的低效,Knuth-Morris-Pratt 字符串查找算法(简称“KMP”)是一种最常见的改进算法,由Donald Knuth、Vaughan Pratt、James H. Morris三人于1977年联合发表,故取这3人的姓氏命名此算法。
这一部分可能有点复杂,不好用文字表述,最好去b站或者慕课网这种学习类网站找一个视频看看,就很好懂了
https://www.bilibili.com/video/av11866460?from=search&seid=2084575193725296150
附一个b站的链接
该文章也写的很好,放出来给大家学习
https://blog.csdn.net/qq_35644234/article/details/55806885