字串轉byte陣列 字串匹配演算法總覽

2021-10-14 20:19:23 字數 975 閱讀 2583

字串匹配在文字處理裡非常重要,我們採用簡潔的python**把以下演算法一一實現並講解。

樸素演算法 (***** algorithm)

rabin-karp 演算法

有限自動機演算法(finite automation)

knuth-morris-pratt 演算法(kmp algorithm)

boyer-moore 演算法

simon 演算法

colussi 演算法

galil-giancarlo 演算法

apostolico-crochemore 演算法

horspool 演算法和

sunday 演算法

為了更好地闡述問題,我們先規定好統一的符號,便於後續的描述。

字串匹配演算法通常分為兩個步驟:預處理(preprocessing)和匹配(matching),所以在討論演算法的時候要同時給出兩者的時間複雜度。

樸素演算法即把模式與文字按照位置一一查詢,**如下

def string_match_*****_algorithm(text, pattern):

for i in range(len(text)):

for j in range(len(pattern)):

if i+j >= len(text):

break

if pattern[j] != text[i+j]:

break

else:

return i

return -1

可見,演算法時間複雜度為

Byte陣列轉字串再getBytes和原來不一樣

用io流讀取並輸出時,採用byte陣列讀取固定長度len,為了保證當最後一次讀取位元組數不足len時後面未被覆蓋的位元組對輸出產生影響,一般採用new string bytes,0,len getbytes 的方法去擷取位元組陣列的有效長度。初學io流的時候就是採用如下的 進行複製檔案的 方法二 基...

模板 字串 字串匹配

計算next陣列的方法是對於長度為n的匹配串,從0到n 1位依次求出字首字尾最大匹配長度。下面的寫法是僅僅檢測有沒有匹配然後返回第乙個匹配位置,而不是返回所有匹配位置。include include include using namespace std const int n 100 char s...

字串,字串陣列,字串指標!!

字串 字元陣列實際上是一系列字元的集合,也就是 字串 string 字串陣列 在c語言中,沒有專門的字串變數,沒有string型別,通常就用乙個字元陣列來存放乙個字串。c語言規定,可以將字串直接賦值給字元陣列 在c語言中,字串總是以 0 作為串的結束符。上面的兩個字串,編譯器已經在末尾自動新增了 0...