####僅作為筆記
串是由零個或多個字元組成的有限序列,又名字串。
兩個串比較大小:
給定兩個串:s=「a1 a2 … an」,t=「b1 b2 … bm」,當滿足以下條件之一時,sn < m, 且 ai = bi(i=1, 2, 3, …, n)。
存在某個k<=min(m,n),使得ai = bi(i=1, 2, …, k-1),ak < bk。
串的抽象資料型別:
adt 串(string)
data
串中元素僅有乙個字元組成,相鄰元素具有前驅和後繼的關係。
operation
strassign
(t,*chars)
: 生成乙個其值等於字串常量的chars的串t。
strcopy
(t,s)
: 串s存在,由串s複製得串t。
clearstring
(s): 串s存在,將串清空。
stringempty
(s): 若串s為空,返回true,否則返回false。
strlength
(s): 返回串s的元素個數,即串的長度。
strcompare
(s,t)
: 若s>t,返回值》
0,若s=t,返回0
,若s0。 concat
(t,s1,s2)
: 用t返回由s1和s2聯接而成的新串。
substring
(sub,s,pos,len)
: 串s存在,1
<=pose<=
strlength
(s),且0
<=len<=
strlength
(s)-pos+
1,用sub返回串s的第pos個字元起長度為len的子串。
index
(s,t,pos)
: 串s和t存在,t是非空串,
1<=pose<=
strlength
(s),若主串s中存在和串t值相同的子串,則返回它在主串s中第pose個字元之後第一次出現的位置,否則返回0。
replace
(s,t,v)
: 串s、t和v存在,t是非空串。用v替換主串s**現的所有與t相等的不重疊的子串。
strinsert
(s,pos,t)
: 串s和t存在,1
<=pose<=
strlength
(s)+
1。在串s的第pos個字元之前插入t。
strdelete
(s,pos,len)
: 串s存在,1
<=pose<=
strlength
(s)-len+
1。從串s中刪除第pos個字元起長度為len的子串。
endadt
kmp 模式匹配演算法實現
/*通過計算返回子串t的next陣列*/
void
get_next
(string t,
int*next)
else
j = next[j]
;/*若字元不相同,則j值回溯*/
}}
/*返回子串t在主串s中第pos個字元之後的位置。若不存在,則函式返回值為0*/
/*t非空,1 <= pos <= strlength(s)。*/
intindex_kmp
(string s, string t,
int pos)
else
j = next[j]
;/*j退回合適的位置,i值不變*/}if
(j > t[0]
)return i - t[0]
;else
return0;
}
大話資料結構 第2章 演算法
3 演算法設計的要求 4 演算法效率的度量方法 5 函式的逐漸增長 6 演算法時間複雜度 7 常見的時間複雜度 8 最壞情況與平均情況 9 演算法空間複雜度 總結 演算法的定義 演算法是解決特定問題求解步驟的描述,在計算機中表現為指令的有限序列,並且每一條指令表示乙個或者多個操作。演算法的特性 輸入...
大話資料結構 串
1.串的定義 串是由0個或多個字元組成的有限序列,也叫做字串。串中 字元數目n稱為串的長度。子串 串中任意個數的連續字元組成的子串行稱為該字串的子串,包含該子串的串稱為主串。子串中的位置就是該子串第乙個字元在主串中的序號。2.串的比較 計算機的字串標準包括 ascii碼和unicode碼。其中asc...
大話資料結構 串
串 由零個或多個字元組成的有限序列,又名叫字串。操作index的實現演算法 t為非空串。若主串s中第pos個字元之後存在與t相等的子串,則返回第乙個這樣的子串在s中的位置,否則返回0 intindex string s,string t,int pos return0 若無子串與t相等,返回0 用基...