資料結構 字串

2021-09-29 09:41:38 字數 569 閱讀 6687

字串是由0個或多個字元構成的序列,可記為s='a1a2a3…an',其中ai可以是字母,也可是數字或者其他字元,零個字元的串稱為空串。

而字串的順序結構就是用簡單的char型別陣列來儲存沒什麼好說的,下面介紹一下bf演算法與kmp演算法:

bf演算法就是比較平常的雙重迴圈,如果匹配成功打斷迴圈,否則子串的比較開始數加一,函式:

int bf(char s,char t)

else

}if(t[j]=='\0') return start+1;

else return 0;

}相比較於bf演算法,kmp演算法減少了回溯的過程,這樣大大提高了**效率,它的思想就是找到副串當中,當前位置的字元與要匹配的串前面有多少相同的字元,這樣就可以直接和相同之後的字元匹配,大大減少了時間複雜度。

借張圖表示一下每個表示有多少相同字元的陣列計算方法:

具體實現**:

void next(char *t,int *nv,int size)        

資料結構 字串

1 字串 include string.h include stdio.h include stdlib.h include math.h include time.h define ok 1 define error 0 define true 1 define false 0 define ma...

資料結構 字串

靜態陣列實現 順序儲存 串的順序儲存 define maxlen 255 預定義最大串長為255 typedef struct 靜態陣列實現 順序儲存 sstring 動態陣列實現 堆分配儲存 typedef struct 動態陣列實現 堆分配儲存 hstring 初始化void inithstri...

資料結構 字串匹配

演算法 如下,包括暴力匹配和kmp演算法。參考 include stringmatching.h stringmatching stringmatching void stringmatching stringmatching void 返回子串t在主串s中第pos個字串之後的位置。若不存在,則返回...