串的定義:零個或多個字符組成的有限序列,又稱字符串。
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