大話資料結構 串

2021-08-10 05:46:07 字數 1001 閱讀 8718

1. 串的定義

串是由0個或多個字元組成的有限序列,也叫做字串。串中 字元數目n稱為串的長度。

子串:串中任意個數的連續字元組成的子串行稱為該字串的子串,包含該子串的串稱為主串。子串中的位置就是該子串第乙個字元在主串中的序號。

2. 串的比較

計算機的字串標準包括:ascii碼和unicode碼。其中ascii由8位二進位制組成,可以表達256個字元;unicode由16位二進位制組成,可以表達65536個字元。當然unicode前面256個字元與ascii一致。

3. 串的抽象資料型別

串的邏輯結構和線性表很相似,不同之處在於串針對的是字元。

4. 串的儲存結構

串的儲存結構與線性表相同,分為兩種:順序儲存結構,鏈式儲存結構。

4.1 串的順序儲存結構

串的順序儲存結構使用陣列來儲存,字串的實際長度通可以存在陣列的第乙個位置,最後乙個位置等。順序儲存結構的最大缺點在於字串在進行乙個操作,比如字串合併等可能會導致溢位,字串的長度超過陣列長度。

4.2 串的鏈式儲存結構

串的鏈式儲存結構與鍊錶類似,不同之處在於每個節點可能儲存多個字元。

5. 樸素的模式匹配演算法

簡單的講,字串匹配最簡單的目的就是找某個字串中是否包含另外乙個字串,如果包含則返回位置。比如在python中有這樣find函式來實現功能。

# -*- coding: utf-8 -*-

str_m = "abaababaddecab" # 母串

str_s = "abad" # 子串

pos = str_m.find(str_s)

6.kmp模式匹配演算法

reference:

大話資料結構 串

串 由零個或多個字元組成的有限序列,又名叫字串。操作index的實現演算法 t為非空串。若主串s中第pos個字元之後存在與t相等的子串,則返回第乙個這樣的子串在s中的位置,否則返回0 intindex string s,string t,int pos return0 若無子串與t相等,返回0 用基...

《大話資料結構》

函式的漸進增長 我們現在來判斷一下,兩個演算法a和b哪個更好。假設兩個演算法的輸入規模都是n,演算法a要做2n 3次操作,你可以理解為先有乙個n次的迴圈,執行完成後,再有乙個n次迴圈,最後有三次賦值或運算,共2n 3次操作。演算法b要做3n 1次操作,你覺得它們誰更快呢 準確來說,答案是不一定的 當...

《大話資料結構》

常見的時間複雜度 常見的時間複雜度如下圖所示 常用的時間複雜度所耗費的時間從小到大依次是 o 1 o logn o n o nlogn o n o n 三次方 o 2 n次方 o n!o n n次方 我們前面已經談到了 o 1 常數階 o logn 對數階 o n 線性階 o n 平方階等,至於o ...