神奇少年的數據結構學習筆記四(串)

串的定義:零個或多個字符組成的有限序列,又稱字符串。

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  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章