串的定義:
是由零個或多個字符組成的有限序列,S=‘a1a1a3a4a5…an’(a≥0)
其中:S為串名;n為串的個數;ai為串的元素,
空串:
空串是指長度n=0的串,它不包含任何字符,
空格串:
空格串是僅由一個或多個空格組成的串,長度大于等于1,
子串:
串中任意連續的字符組成的子序列為子串,
主串:
包含子串的串相應的稱為主串,
位置:
字符在序列中的序號,子串在主串的位置則以子串的第一個字符在主串的位置來表示,
串相等:
兩個串的長度相等,并且對應位置的字符都相等,
串的基本操作:
1.串插入操作:


2.串洗掉操作:


3.串鏈接操作:


4.求子串操作:


注意:起始位置和子串長度之間存在約束關系!!
5.求位置操作:


6.串替換操作:


替換操作只替換一次!!!
串的模式匹配:

BF模式匹配演算法(又稱暴力匹配演算法)
主串S中的子串與模式串T進行比較,直到找到相同的子串為止,
如果存在相同的子串,則匹配成功,回傳子串在主串S中的為止pos,否則匹配不成功,
子串與模式的比較策略:從前到后依次進行比較,
例子如下:




串的模式匹配思想:
從主串的第pos個字符起,和模式串的第一個字符比較
如果兩個串的第一個字符相等,繼續逐個比較后續字符;如果第一個字符不相等,則從主串的下一個字符和模式串的第一個字符比較,依次比較,直到找到與模式串相等的子串,回傳模式串第一個字符相對應在主串中的序號;如果不成功,回傳0,
匹配演算法的代碼實作:

該演算法的時間復雜度為:O(n*m)
其中,n為主串的長度,m為模式串的長度!
串的KMP演算法:

該演算法的特點:
在匹配的程序中,不需要回溯主串的指標i,而且時間復雜度可以達到O(m+n),
看實體:



串的模式匹配思想:

演算法代碼:



該演算法的時間復雜度為:O(n+m),
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/206459.html
標籤:其他
上一篇:GCN節點分類
