- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《数据结构与算法》第四章串String概要1
T j next[j]=k k-1 T j 若pk≠pj,设next[k]=h k-1 next[j+1]=h+1=next[k]+1 T j 若pnext[k] =pj k-1 h-1 j next 1 0 2 1 3 1 4 1 5 1 6 2 7 2 8 3 9 4 10 2 例:T=‘abcdaabcab’ void get_next(SString T,int next[]) { //求模式串T的next函数值并存如数组next j=1; next[j]=0; k=0; while(jT[0]) if(k==0||T[j]==T[k]) {++j; ++k; next[j]=k;} else k=next[k]; }//get_next int Index_KMP(SString S,SString T,int pos) { //利用模式T的 next函数求T在主串S中第pos个字符后的位置 //的 KMP算法,其中T非空, 1≤pos≤StrLength(S) i=pos; j=1; while(i=S[0]j=T[0]) if(j==0 || S[i]==T[j] ) {++i; ++j; } else j=next[j]; if(jT[0]) return i-T[0]; else return 0; }//Index_KMP 由于指针i无须回溯,比较次数仅为n,即使加上计算next[j]时所用的比较次数m,比较总次数也仅为n+m=O(n+m),大大快于穷举算法。 a b a c a a c a b c a b a c a b a a a b a c a b 1 2 3 4 5 6 a b a c a b 7 a b a c a b 8 9 10 11 12 a b a c a b 13 a b a c a b 14 15 16 17 18 19 2 1 2 1 1 0 Next b a c a b a P 6 5 4 3 2 1 j a a a a b a a a a a a a a a a b a a a a a b 1 2 3 4 5 6 a a a a a b 5 4 3 2 1 0 Next b a a a a a P 6 5 4 3 2 1 j a a a a a b 7 a a a a a b 8 a a a a a b 9 ......Si-j Si-j+1 Si-j+2 Si-k+2 ... Si-k Si-k+1 ... ... Si p1 p2 pj-k pj-k+1 ... pj-2 pj-1 p1 p2 pk ... pk-2 pk-1 Si-2 Si-1 pj-k+2 pj ≠ || || || || || || || || || || || || 不需要比较 p1 p2 ... pnext[k] ........ 修正next 5 0 0 0 0 0 nextval b a a a a a T 6 5 4 3 2 1 j void get_nextval(SString T,int nextval[]) { //求模式串T的next函数修正值并存如数组nextval j=1; nextval[j]=0; k=0; while(jT[0]) if(k==0||T[j]==T[k]) {++j; ++k; if(T[j]!=T[k]) nextval[j]=k; else nextval[j]=nextval[k]; } else k=nextval[k]; }//get_nextval int index(char s[ ], char t[ ],int pos) { int i, j, k; for(i =pos-1; s[i] != ‘\0’; i++){ for(j=i,k=0;t[k]!=‘\0’s[j]==t[k]; j++,k++); if(t[k] == ‘\0’) return ( i+1); } return ( 0); } * i1+j-1=i2 i1=i2-j+1 i1+1=i2
您可能关注的文档
- 《我真的很快乐》概要1.ppt
- 《我的母亲》(好)概要1.ppt
- 新人教版七年级数学上册1.1正数和负数 课件.ppt
- 新人教版七年级英语(下)各单元词汇,句型与练习.doc
- 新人教版七年级历史上册第1课中国早期人类的代表——北京人.ppt
- 《战地1》玩家医疗兵玩法心得体验分享概要1.doc
- 《扬州慢》 张华英概要1.ppt
- 新人教版七年级数学第一章有理数的加法课件.ppt
- 《我的母亲》教学课件概要1.ppt
- 新世界大学英语读写教程第一册第7单元.ppt
- 新人教版四年级数学乘、除法的意义和各部分间的关系课件.ppt
- 《文化研究导论》读书笔记概要1.doc
- 新人教版必修三 Unit 2 Healthy eating学案.doc
- 《文学意境的特征》ppt课件(34页)概要1.ppt
- 新人教版必修三Unit 1 Festivals around the world -Using language.ppt
- 《文学意境的特征》ppt课件(25页)概要1.ppt
- 新人教版初中生物PPT课件:第5单元 第2章 第2节 先天性行为和学习行为(人教版八年级上).ppt
- 《数据结构与算法》第一章数据结构与算法实验概要1.ppt
- 《文学类文本阅读专项突破》1概要1.ppt
- 《文与可画筼筜谷偃竹记》公开课概要1.ppt
文档评论(0)