版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第4章串串的定義串的存儲結(jié)構(gòu)串的模式匹配4.1串的定義2描述各種信息的文字符號序列通常稱為字符串,簡稱串。在計(jì)算機(jī)上的非數(shù)值處理一般都是字符串?dāng)?shù)據(jù)。串是一種內(nèi)容受限的線性表。串是由零個或多個字符構(gòu)成的有限序列,記為:s="a1a2…an"例如:"thisisastring","is"
,"
"
串長:串值中字符個數(shù)(n)空串:長度為0的串空格串:僅含有空格字符的串(n不為0)子串:串中若干相鄰字符組成的子序列主串:包含子串的串子串中第0個字符在主串中出現(xiàn)的位置稱為此子串在該主串中的位置。
串名串值串之間的大小關(guān)系:設(shè)s1="a0a1…am-1",s2="b0b1…an-1"若m=n且ai=bi,i=0,1,…m-1,則s1=s2(2)滿足下面條件之一,則s1<s2m<n,且ai=bi,i=0,1,…m-1 例如:"abc"與"abcd"存在某個0<k≤min(m,n),使得ai=bi,i=0,1,…k-1,ak<bk
例如:"abc"與"adc"(3)不滿足以上條件,則s1>s24.1串的定義3串的抽象數(shù)據(jù)類型定義4.2串的存儲結(jié)構(gòu)1.串的順序存儲4串的順序存儲結(jié)構(gòu)簡稱為順序串。類似于順序表,順序串也是用一組地址連續(xù)的存儲單元存儲串中的字符序列。為了表示串的結(jié)尾,一般在串尾存儲一個不會在串中出現(xiàn)的特殊字符作為串的終結(jié)符。例如,C++語言中用’\0’表示串的結(jié)束。4.2串的存儲結(jié)構(gòu)2.串的鏈?zhǔn)酱鎯?串采用鏈?zhǔn)酱鎯Y(jié)構(gòu)存儲時稱為鏈串,可采用帶頭結(jié)點(diǎn)的單鏈表來表示。鏈串的組織形式與一般的單鏈表類似,主要區(qū)別在于鏈串中的一個結(jié)點(diǎn)可以存儲多個字符。通常將鏈串中每個結(jié)點(diǎn)所存儲的字符個數(shù)稱為結(jié)點(diǎn)大小。在鏈?zhǔn)酱鎯Ψ绞街校Y(jié)點(diǎn)大小的選擇直接影響著串處理的效率。存儲密度小(如結(jié)點(diǎn)大小為1)時,運(yùn)算處理方便,但存儲占用量大。存儲密度大時,一些基本操作(如插入、刪除)的實(shí)現(xiàn)有所不便,而且可能引起大量字符移動結(jié)點(diǎn)大小為4的鏈表:結(jié)點(diǎn)大小為1的鏈表:結(jié)點(diǎn)大小大于1時,鏈表的最后一個結(jié)點(diǎn)不一定全被串值占滿,未占用的數(shù)據(jù)域里應(yīng)補(bǔ)上不屬于串的字符集的特殊符號4.3串的模式匹配6設(shè)T="t0t1…tn-1",P="p0p1…pm-1",其中0<m≤n。如要在字符串T中查找是否有與字符串P相同的子串,則稱字符串T為目標(biāo)串或主串,稱字符串P為模式串或子串,在T中從位置pos開始查找與P相同的子串第一次出現(xiàn)的位置的過程稱為字符串模式匹配。4.3串的模式匹配1.BF算法7Brute-Force算法簡稱為BF算法,也稱簡單模式匹配算法。BF算法的基本思想是蠻力匹配,即從主串s的第一個字符開始和模式串t的第一個字符進(jìn)行比較,若相等,則繼續(xù)逐個比較后續(xù)字符;否則,從主串s的第二個字符開始重新與模式串t的第一個字符進(jìn)行比較,以此類推。若從主串s的第i個字符開始,每個字符依次和模式串t中的對應(yīng)字符相等,則匹配成功,返回位置i;否則,匹配失敗,返回-1。第1趟TabaababP
abab第2趟TabaababPabab第3趟TabaababPabab第4趟TabaababPabab4.3串的模式匹配1.BF算法8(1)用start保存主串比較的開始位置,初值為0。(2)用i和j指示主串s和模式串t中當(dāng)前正待比較的字符下標(biāo),i和j的初值均為0。(3)重復(fù)下述操作,直到s或t的所有字符比較完畢:①若s[i]和t[j]相等,則繼續(xù)比較s和t的下一對字符;②否則,下標(biāo)i和j分別回溯,開始下一趟匹配。(4)若t中所有字符全部比較完畢,則匹配成功,返回本趟匹配的起始位置;否則匹配失敗,返回0。【算法步驟】intBF(strings,stringt){ inti=0,j=0,start=0; while(i<s.length()&&j<t.length()) { if(s[i]==t[j]) { j++;i++; } else { start++; i=start; j=0; } } if(j==t.length()) returnstart+1;
else return0;}4.3串的模式匹配1.BF算法9最好情況每趟不成功的匹配都發(fā)生在模式串t的第一個字符與主串s中相應(yīng)字符的比較。假設(shè)從主串的第i個位置開始與模式串匹配成功,則前在i-1趟不成功的匹配中共比較了i-1次,第i趟成功的匹配中共比較了m次,總比較次數(shù)為i-1+m。對于成功匹配的主串,其起始位置由1到n-m+1,假設(shè)這n-m+1個位置上的匹配成功概率相等,則最好情況下匹配成功的平均比較次數(shù)為:【算法分析】設(shè)主串s長度為n,模式串t長度為m。時間復(fù)雜度為n+m
時間復(fù)雜度為n×m4.3串的模式匹配2.KMP算法10BF算法簡單但效率低。造成BF算法效率低的主要原因是回溯,即在某趟匹配失敗后,主串s要回溯到本趟匹配開始字符的下一個字符,模式串t要回溯到第一個字符,而這些回溯往往是不必要的。改進(jìn)算法——KMP消除回溯
本章小結(jié)(1)串是一種內(nèi)容受限的線性表,它限定了表中的元素為字符。(2)串有兩種基本存
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工程砌墻材料供應(yīng)合同
- 退貨管理軟件租賃協(xié)議
- 商用汽車租賃合同模板
- 中學(xué)教師資格《美術(shù)學(xué)科知識與教學(xué)能力》復(fù)習(xí)備考核心題庫(含解析)
- (全新版)公共衛(wèi)生執(zhí)業(yè)醫(yī)師資格備考題庫寶典(核心題版)
- 長期合作供貨協(xié)議書書
- 幼兒園園升降國旗制度
- 2024至2030年中國玻璃纖維水箱行業(yè)投資前景及策略咨詢研究報告
- 生產(chǎn)過程質(zhì)量管理協(xié)議書
- 農(nóng)業(yè)生產(chǎn)貸款合同
- 2023-2024學(xué)年北京市東城區(qū)東直門中學(xué)七年級(上)期中數(shù)學(xué)試卷【含解析】
- 2024年統(tǒng)編版新教材語文小學(xué)一年級上冊第五單元檢測題及答案
- 新制定《公平競爭審查條例》主題
- 在線網(wǎng)課知道知慧《戰(zhàn)艦與海戰(zhàn)》單元測試答案
- 2024年中煤集團(tuán)西南分公司招聘筆試參考題庫附帶答案詳解
- 2024肺栓塞指南解讀2024
- 華為經(jīng)營管理-華為供應(yīng)鏈管理(6版)
- 第13課沖出地球(教學(xué)課件)六年級科學(xué)上冊
- 江西省住宅工程開裂、滲漏等質(zhì)量常見問題防治技術(shù)指南
- 多囊卵巢綜合征的診斷和治療-課件
- 上海初中生綜合素質(zhì)評價典型事例范文通用6篇
評論
0/150
提交評論