版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第4章特殊的線性表——串華北水利學(xué)院數(shù)據(jù)結(jié)構(gòu)第四章(陳波)共44頁,您現(xiàn)在瀏覽的是第1頁!問題的提出查毒程序搜索引擎華北水利學(xué)院數(shù)據(jù)結(jié)構(gòu)第四章(陳波)共44頁,您現(xiàn)在瀏覽的是第2頁!1.串的邏輯結(jié)構(gòu)串:由零個或多個任意字符組成的有限序列。串長度:串中所包含的字符個數(shù)??沾洪L度為0的串,記為:""。非空串通常記為:
S=“a1a2…an”
其中:S是串名,雙引號是定界符,雙引號引起來的部分是串值,ai(1≤i≤n)是一個任意字符。華北水利學(xué)院數(shù)據(jù)結(jié)構(gòu)第四章(陳波)共44頁,您現(xiàn)在瀏覽的是第3頁!順序串:用數(shù)組來存儲串中的字符序列。(1)用一個變量來表示串的長度。2.串的存儲結(jié)構(gòu)——順序串如何表示串的長度?華北水利學(xué)院數(shù)據(jù)結(jié)構(gòu)第四章(陳波)共44頁,您現(xiàn)在瀏覽的是第4頁!順序串:用數(shù)組來存儲串中的字符序列。(3)用數(shù)組的0號單元存放串的長度,串值從1號單元開始存放。
2.串的存儲結(jié)構(gòu)——順序串如何表示串的長度?華北水利學(xué)院數(shù)據(jù)結(jié)構(gòu)第四章(陳波)共44頁,您現(xiàn)在瀏覽的是第5頁!3.串的基本操作串的鏈接串的比較串的復(fù)制習(xí)題4.4、4.5、4.6習(xí)題4.7。編寫一個函數(shù)來顛倒單詞在字符串里的出現(xiàn)順序?!尽冻绦騿T面試攻略(第2版)》p81】例如,把字符串“Doordonot,thereisnotry.”轉(zhuǎn)換為“try.noistherenot,doorDo”。假設(shè)所有單詞都以空格為分隔符,標點符號也當(dāng)做字母來對待。請對你的設(shè)計思路做出解釋,并對你的解決方案的執(zhí)行效率進行評估。華北水利學(xué)院數(shù)據(jù)結(jié)構(gòu)第四章(陳波)共44頁,您現(xiàn)在瀏覽的是第6頁!4.串的應(yīng)用——模式匹配模式匹配:給定主串S="s1s2…sn"和模式T="t1t2…tm",在S中尋找T的過程稱為模式匹配。如果匹配成功,返回T在S中的位置,如果匹配失敗,返回0。華北水利學(xué)院數(shù)據(jù)結(jié)構(gòu)第四章(陳波)共44頁,您現(xiàn)在瀏覽的是第7頁!例:主串S="ababcabcacbab",模式T="abcac"ababcabcacbabi=3,j=3失?。籭回溯到2,j回溯到1ijijij第
1趟abcac
4.串的應(yīng)用——BF模式匹配算法華北水利學(xué)院數(shù)據(jù)結(jié)構(gòu)第四章(陳波)共44頁,您現(xiàn)在瀏覽的是第8頁!ababcabcacbabi=2,j=1失敗i回溯到3,j回溯到1第
2趟ijabcac
例:主串S="ababcabcacbab",模式T="abcac"4.串的應(yīng)用——BF模式匹配算法華北水利學(xué)院數(shù)據(jù)結(jié)構(gòu)第四章(陳波)共44頁,您現(xiàn)在瀏覽的是第9頁!ababcabcacbababcac
i=7,j=5失敗i回溯到4,j回溯到1第
3趟ijijijijij例:主串S="ababcabcacbab",模式T="abcac"4.串的應(yīng)用——BF模式匹配算法華北水利學(xué)院數(shù)據(jù)結(jié)構(gòu)第四章(陳波)共44頁,您現(xiàn)在瀏覽的是第10頁!ababcabcacbababcac
i=4,j=1失敗i回溯到5,j回溯到1第
4趟ij例:主串S="ababcabcacbab",模式T="abcac"4.串的應(yīng)用——BF模式匹配算法華北水利學(xué)院數(shù)據(jù)結(jié)構(gòu)第四章(陳波)共44頁,您現(xiàn)在瀏覽的是第11頁!ababcabcacbababcac
i=5,j=1失敗i回溯到6,j回溯到1第
5趟ij例:主串S="ababcabcacbab",模式T="abcac"4.串的應(yīng)用——BF模式匹配算法華北水利學(xué)院數(shù)據(jù)結(jié)構(gòu)第四章(陳波)共44頁,您現(xiàn)在瀏覽的是第12頁!ababcabcacbababcac
i=11,j=6,T中全部字符都比較完畢,匹配成功。第
6趟ijijijijij例:主串S="ababcabcacbab",模式T="abcac"4.串的應(yīng)用——BF模式匹配算法華北水利學(xué)院數(shù)據(jù)結(jié)構(gòu)第四章(陳波)共44頁,您現(xiàn)在瀏覽的是第13頁!intBFmatching(chars[],chart[]){i=1;j=1;
while(i<=s[0]&&j<=t[0]){if(s[i]==t[j]){i++;j++;}else{i=i-j+2;j=1;}}
if(j>t[0])return(i-j+1);
elsereturn0;}4.串的應(yīng)用——BF模式匹配算法華北水利學(xué)院數(shù)據(jù)結(jié)構(gòu)第四章(陳波)共44頁,您現(xiàn)在瀏覽的是第14頁!4.串的應(yīng)用——BF模式匹配算法設(shè)串s長度為n,串t長度為m,在匹配成功的情況下,考慮兩種極端情況:最壞情況:不成功的匹配都發(fā)生在串t的最后一個字符。例如:s="aaaaab"t="aaab“設(shè)匹配成功發(fā)生在si處,則在i-1趟不成功的匹配中共比較了(i-1)×m次,第i趟成功的匹配共比較了m次,所以總共比較了i×m次,因此平均比較的次數(shù)是一般情況下,m<<n,因此最壞情況下的時間復(fù)雜度是O(nm)。華北水利學(xué)院數(shù)據(jù)結(jié)構(gòu)第四章(陳波)共44頁,您現(xiàn)在瀏覽的是第15頁!i=3,j=3失敗;
s2=t2;t1≠t2∴t1≠s2ababcabcacbabij第
1趟abcac
ababcabcacbab第
2趟abcac
4.串的應(yīng)用——KMP模式匹配算法華北水利學(xué)院數(shù)據(jù)結(jié)構(gòu)第四章(陳波)共44頁,您現(xiàn)在瀏覽的是第16頁!ababcabcacbababcac
第
3趟iji=7,j=5失敗s4=t2;t1≠t2∴t1≠s4ababcabcacbababcac
第
4趟4.串的應(yīng)用——KMP模式匹配算法華北水利學(xué)院數(shù)據(jù)結(jié)構(gòu)第四章(陳波)共44頁,您現(xiàn)在瀏覽的是第17頁!ababcabcacbababcac
第
3趟iji=7,j=5失敗s5=t3;t1≠t3∴t1≠s5ababcabcacbababcac
第
6趟匹配成功4.串的應(yīng)用——KMP模式匹配算法華北水利學(xué)院數(shù)據(jù)結(jié)構(gòu)第四章(陳波)共44頁,您現(xiàn)在瀏覽的是第18頁!請抓住部分匹配時的兩個特征:(1)設(shè)模式滑動到第k個字符,則T1~Tk-1
=Si-(k-1)
~
Si-1
S="ababc
a
b
cacbab"T="a
b
cac"ikjS="ababc
a
bcacbab"T="ab
cac"ik4.串的應(yīng)用——KMP模式匹配算法華北水利學(xué)院數(shù)據(jù)結(jié)構(gòu)第四章(陳波)共44頁,您現(xiàn)在瀏覽的是第19頁!T1…Tk-1=Tj-(k-1)…Tj-1說明了什么?(1)k
與
j
具有函數(shù)關(guān)系,由當(dāng)前失配位置j,可以計算出滑動位置k(即比較的新起點);(2)滑動位置k
僅與模式串T有關(guān)。從第1位往右經(jīng)過k-1位從j-1位往左經(jīng)過k-1位k=max{k|1<k<j
且T1…Tk-1=Tj-(k-1)…Tj-1}T1…Tk-1=Tj-(k-1)…Tj-1的物理意義是什么?模式應(yīng)該向右滑多遠才是最高效率的?4.串的應(yīng)用——KMP模式匹配算法華北水利學(xué)院數(shù)據(jù)結(jié)構(gòu)第四章(陳波)共44頁,您現(xiàn)在瀏覽的是第20頁!4.串的應(yīng)用——KMP模式匹配算法計算next[j]的方法:當(dāng)j=1時,next[j]=0;//next[j]=0表示根本不進行字符比較當(dāng)j>1時,next[j]的值為:模式串的位置從1到j(luò)-1構(gòu)成的串中所出現(xiàn)的首尾相同的子串的最大長度加1。當(dāng)無首尾相同的子串時next[j]的值為1。next[j]=1表示從模式串頭部開始進行字符比較華北水利學(xué)院數(shù)據(jù)結(jié)構(gòu)第四章(陳波)共44頁,您現(xiàn)在瀏覽的是第21頁!voidGetNext(chart[]){next[1]=0;j=1;k=0;while(j<t[0])if((k==0)||(t[j]==t[k]))
{j++;k++;next[j]=k;}elsek=next[k];}求模式串t的next函數(shù)值算法4.串的應(yīng)用——KMP模式匹配算法華北水利學(xué)院數(shù)據(jù)結(jié)構(gòu)第四章(陳波)共44頁,您現(xiàn)在瀏覽的是第22頁!例:設(shè)主串s="abcabcabd",模式串p="abcabd",按KMP算法進行模式匹配,當(dāng)"s0s1s2s3s4"="p0p1p2p3p4",且s5≠p5時,應(yīng)進行
比較。
A、s5和p2 B、s5和p3 C、s1和p0 D、s8和p54.串的應(yīng)用——KMP模式匹配算法華北水利學(xué)院數(shù)據(jù)結(jié)構(gòu)第四章(陳波)共44頁,您現(xiàn)在瀏覽的是第23頁!1.串的邏輯結(jié)構(gòu)兩個串相等:如果兩個串的長度相等且對應(yīng)字符都相等。子串:串中任意連續(xù)的字符組成的子序列稱為該串。主串:包含子串的串。子串的個字符在主串中的序號稱為子串的位置。華北水利學(xué)院數(shù)據(jù)結(jié)構(gòu)第四章(陳波)共44頁,您現(xiàn)在瀏覽的是第24頁!順序串:用數(shù)組來存儲串中的字符序列。(2)在串尾存儲一個不會在串中出現(xiàn)的特殊字符作為串的終結(jié)符
。
2.串的存儲結(jié)構(gòu)——順序串如何表示串的長度?華北水利學(xué)院數(shù)據(jù)結(jié)構(gòu)第四章(陳波)共44頁,您現(xiàn)在瀏覽的是第25頁!鏈接串:用鏈接存儲結(jié)構(gòu)來存儲串。p552.串的存儲結(jié)構(gòu)——鏈接串華北水利學(xué)院數(shù)據(jù)結(jié)構(gòu)第四章(陳波)共44頁,您現(xiàn)在瀏覽的是第26頁!3.串的基本操作刪除特定字符?!尽冻绦騿T面試攻略(第2版)》p78】用C語言編寫一個高效率的函數(shù)來刪除字符串里的給定字符。這個函數(shù)的調(diào)用模型如下所示:voidRemoveChars(charstr[],charremove[]);注意,remove中的所有字符都必須從str中刪除干凈。比如說,如果str是“BattleoftheVowels:HawaiiVS.Grozny”,remove是“aeiou”,這個函數(shù)將把str轉(zhuǎn)換為“BttlfthVwls:Hwvs.Grzny”。請對你的設(shè)計思路做出解釋,并對你解決方案的執(zhí)行效率進行評估。華北水利學(xué)院數(shù)據(jù)結(jié)構(gòu)第四章(陳波)共44頁,您現(xiàn)在瀏覽的是第27頁!4.串的應(yīng)用——BF模式匹配算法基本思想:從主串S的個字符開始和模式T的個字符進行比較,若相等,則繼續(xù)比較兩者的后續(xù)字符;否則,從主串S的第二個字符開始和模式T的個字符進行比較,重復(fù)上述過程,直到T中的字符全部比較完畢,則說明本趟匹配成功;或S中字符全部比較完,則說明匹配失敗。華北水利學(xué)院數(shù)據(jù)結(jié)構(gòu)第四章(陳波)共44頁,您現(xiàn)在瀏覽的是第28頁!ababcabcacbabi=3,j=3失?。籭回溯到2,j回溯到1ji第
1趟abcac
例:主串S="ababcabcacbab",模式T="abcac"4.串的應(yīng)用——BF模式匹配算法華北水利學(xué)院數(shù)據(jù)結(jié)構(gòu)第四章(陳波)共44頁,您現(xiàn)在瀏覽的是第29頁!ababcabcacbabi=2,j=1失敗i回溯到3,j回溯到1第
2趟ijabcac
例:主串S="ababcabcacbab",模式T="abcac"4.串的應(yīng)用——BF模式匹配算法華北水利學(xué)院數(shù)據(jù)結(jié)構(gòu)第四章(陳波)共44頁,您現(xiàn)在瀏覽的是第30頁!ababcabcacbababcac
i=7,j=5失敗i回溯到4,j回溯到1第
3趟ij例:主串S="ababcabcacbab",模式T="abcac"4.串的應(yīng)用——BF模式匹配算法華北水利學(xué)院數(shù)據(jù)結(jié)構(gòu)第四章(陳波)共44頁,您現(xiàn)在瀏覽的是第31頁!ababcabcacbababcac
i=4,j=1失敗i回溯到5,j回溯到1第
4趟ij例:主串S="ababcabcacbab",模式T="abcac"4.串的應(yīng)用——BF模式匹配算法華北水利學(xué)院數(shù)據(jù)結(jié)構(gòu)第四章(陳波)共44頁,您現(xiàn)在瀏覽的是第32頁!ababcabcacbababcac
i=5,j=1失敗i回溯到6,j回溯到1第
5趟ij例:主串S="ababcabcacbab",模式T="abcac"4.串的應(yīng)用——BF模式匹配算法華北水利學(xué)院數(shù)據(jù)結(jié)構(gòu)第四章(陳波)共44頁,您現(xiàn)在瀏覽的是第33頁!1.在串S和串T中設(shè)比較的起始下標i和j;2.循環(huán)直到S或T的所有字符均比較完;2.1如果S[i]=T[j],繼續(xù)比較S和T的下一個字符;2.2否則,將i和j回溯,準備下一趟比較;3.如果T中所有字符均比較完,則匹配成功,返回匹配的起始比較下標;否則,匹配失敗,返回0;4.串的應(yīng)用——BF模式匹配算法華北水利學(xué)院數(shù)據(jù)結(jié)構(gòu)第四章(陳波)共44頁,您現(xiàn)在瀏覽的是第34頁!4.串的應(yīng)用——BF模式匹配算法設(shè)串s長度為n,串t長度為m,在匹配成功的情況下,考慮兩種極端情況:最好情況:不成功的匹配都發(fā)生在串t的個字符。例如:s="aaaaabcd"t="bcd"設(shè)匹配成功發(fā)生在si處,則在i-1趟不成功的匹配中共比較了i-1次,第i趟成功的匹配共比較了m次,所以總共比較了i-1+m次,所有匹配成功的可能情況共有n-m+1種,則:設(shè)從si開始與t串匹配成功的概率為pi,在等概率情況下pi=1/(nm+1),平均比較的次數(shù)是因此最好情況下的時間復(fù)雜度是O(n+m)。華北水利學(xué)院數(shù)據(jù)結(jié)構(gòu)第四章(陳波)共44頁,您現(xiàn)在瀏覽的是第35頁!4.串的應(yīng)用——BF模式匹配算法為什么BF算法時間性能低?在每趟匹配不成功時存在大量回溯,沒有利用已經(jīng)部分匹配的結(jié)果。如何在匹配不成功時主串不回溯?主串不回溯,模式就需要向右滑動一段距離。如何確定模式的滑動距離?華北水利學(xué)院數(shù)據(jù)結(jié)構(gòu)第四章(陳波)共44頁,您現(xiàn)在瀏覽的是第36頁!i=3,j=3失??;
s2=t2;t1≠t2∴t1≠s2ababcabcacbabij第
1趟abcac
ababcabcacbababcac
第
3趟4.串的應(yīng)用——KMP模式匹配算法華北水利學(xué)院數(shù)據(jù)結(jié)構(gòu)第四章(陳波)共44頁,您現(xiàn)在瀏覽的是第37頁!ababcabcacbababcac
第
3趟iji=7,j=5失敗s5=t3;t1≠t3∴t1≠s5ababcabcacbababcac
第
5趟4.串的應(yīng)用——KMP模式匹配算法華北水利學(xué)院數(shù)據(jù)結(jié)構(gòu)第四章(陳波)共44頁,您現(xiàn)在瀏覽的是第38頁!4.串的應(yīng)用——KMP模式匹配算法結(jié)論:i可以不回溯,模式向右滑動到的新比較起點k,并且k僅與模式串T有關(guān)!需要討論兩個問題:①如何由當(dāng)前部分匹配結(jié)果確定模式向右滑動的新比較起點k?②模式應(yīng)該向右滑多遠才是最高效率的?華北水利學(xué)院數(shù)據(jù)結(jié)構(gòu)第四章(陳波)共44頁,您現(xiàn)在瀏覽的是第39頁!請抓住部分匹配時的兩個特征:兩式聯(lián)立可得:T1~Tk-1=Tj-(k-1)
~Tj-1(2)則Tj-(k-1)~
Tj-1=Si-(k-1)~
Si-1S="ababc
a
b
cacbab"T="a
b
cac"ikjiS="ababc
a
b
cacbab"T="a
b
cac"jk(1)設(shè)模式滑動到第k個字符,則T1~Tk-1
=Si-(k-1)
~
Si-1
4.串的應(yīng)用——KMP模式匹配算法華北水利學(xué)院數(shù)據(jù)結(jié)構(gòu)第四章(陳波)共44頁,您現(xiàn)在瀏覽的是第40頁!next[j]=0當(dāng)j=1時//不比較max{k|1<k<j且T1…Tk-1=Tj-(k-1)…Tj-1}1其他情況令k=next[j],則:ne
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖南生物機電職業(yè)技術(shù)學(xué)院《酒店營銷實務(wù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 【物理】《同一直線上二力的合成》(教學(xué)設(shè)計)-2024-2025學(xué)年人教版(2024)初中物理八年級下冊
- 高考物理總復(fù)習(xí)《計算題》專項測試卷含答案
- 重慶醫(yī)藥高等專科學(xué)校《綠色設(shè)計》2023-2024學(xué)年第一學(xué)期期末試卷
- 重慶公共運輸職業(yè)學(xué)院《算法分析與設(shè)計A》2023-2024學(xué)年第一學(xué)期期末試卷
- 鄭州電子商務(wù)職業(yè)學(xué)院《人文地理學(xué)實踐》2023-2024學(xué)年第一學(xué)期期末試卷
- 浙江科技學(xué)院《工程地質(zhì)與地基基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 中國青年政治學(xué)院《第二外語日語》2023-2024學(xué)年第一學(xué)期期末試卷
- 鄭州汽車工程職業(yè)學(xué)院《走近微電子》2023-2024學(xué)年第一學(xué)期期末試卷
- 小學(xué)“三定一聘”工作實施方案
- 財經(jīng)素養(yǎng)知識考試題及答案
- 2024年云南大理州鶴慶縣農(nóng)業(yè)農(nóng)村局招聘農(nóng)技人員6人歷年高頻500題難、易錯點模擬試題附帶答案詳解
- 2024年廣東高考政治真題考點分布匯 總- 高考政治一輪復(fù)習(xí)
- -長峰醫(yī)院火災(zāi)事故教育
- 《經(jīng)濟法基礎(chǔ)》全套教學(xué)課件
- 2024年618調(diào)味品銷售數(shù)據(jù)解讀報告-星圖數(shù)據(jù)x味動中國組委會-202406
- 雙方結(jié)清賠償協(xié)議書
- 2024年河北省中考物理試卷附答案
- 安徽省安慶四中學(xué)2024年中考猜題數(shù)學(xué)試卷含解析
- GB/T 44052-2024液壓傳動過濾器性能特性的標識
- PLM項目產(chǎn)品全生命周期建設(shè)方案
評論
0/150
提交評論