1.串與線性表的區別
串是一種特殊的線性表,資料元素之間呈線性關係。它與線性表的不同是線性表中的資料元素可以存放任意的資料元素,而串中資料元素只能存放字符集(中文字元、英文本元、數字字元、標點字元等)。串的增刪改查通常以子串為資料物件。
2.字符集編碼
字符集:
英文本元-ascii字符集(只含有英文本元),對於乙個英文本母來說,乙個英文本母佔1b。
中英文-unicode字符集(既含有英文本元,又含有中文字元)
unicode字符集編碼方式有utf-8和utf-16等編碼方案(編碼方案可看作字符集的加工函式,使其加工為二進位制編碼。),對於utf-8來說,乙個中文佔3b
3.串的順序儲存和鏈式儲存
串的順序儲存定義:
#define maxsize 100
typedef struct string
sstring;
串的鏈式儲存定義:
typedef
struct stringnode
*string;
乙個結點中應儲存多個字元,不然由於指標所佔容量為4b,而資料元素所佔容量為1b,造成儲存密度低。若無足夠資料元素,可加入#填充。
3.字串的特殊操作
//從字串中取出子串
bool
substring
(sstring &sub, sstring s,
int pos,
int len)
sub.length = len;
return
true
;}
//比較兩字串的區別
intstrcompare
(sstring s, sstring t)
re
//按搜尋是否滿足條件的字串子串索引
intindex
(sstring s, sstring t)
return0;
}
4.樸素模式匹配演算法效能
//樸素模式匹配演算法
intindex
(sstring s, sstring t)
else}if
(j > t.length)
return k;
else
return0;
}
若模式串長度為m,主串長度為n,
則匹配成功的最好時間複雜度為o(m),匹配失敗的最好時間複雜度為o(n-m+1),近似於o(n)
匹配成功/失敗的最差時間複雜度為o(m*(n-m+1))。近似為時間複雜度o(mn)。
串之樸素的模式匹配演算法
一 串的模式匹配的定義 這個問題其實就是乙個字串在乙個大的字串中的定位問題。這種子串的定位問題的操作通常叫做串的模式匹配 二 舉例說明 假如主串是s qbfhilmeach 模式串 p hilk 現在我們需要在主串中找到模式串。它的匹配過程如下 直到匹配成功 簡單得來說,就是對主串的每乙個字元作為子...
字串模式匹配演算法之一 樸素模式匹配演算法
被搜尋的字串稱為主串,待搜尋的字串稱為模式串。樸素模式匹配演算法的基本思想 對主串的每乙個字元作為子串開頭,與模式串進行匹配。對主串做大迴圈,每個字元開頭做模式串長度的小迴圈,直到匹配成功或全部遍歷完成為止。實現非常簡單 int strstr char haystack,char needle 樸素...
串 樸素匹配演算法
c語言極簡版 include include include 返回子串t在主串s中第pos個字元之後的位置。若不存在,則函式返回值為0。intindex char s,char t,int pos else 指標後退重新開始匹配 if j 1 j超出模式串的長度 return i 2 2為模式串的長...