串的课件教案.ppt

想预览更多内容,点击预览全文

申明敬告:

本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己完全接受本站规则且自行承担所有风险,本站不退款、不进行额外附加服务;如果您已付费下载过本站文档,您可以点击这里二次下载

文档介绍

往往在字符串的插入操作中,仅已知子串T插入在字符‘x’之后,因此我们可以通过求子串在串中的序号INDEX(x)函数,得‘x’在串S中的位置i,再完成子串的插入。 若在串S中删除一个子串T,其操作类似于串的插入。完成删除子串操作的程序段为 L1=LEN(S) L2=LEN(T) IND=INDEX(S,T) if(IND=0)write('子串T不在串S中,无需删除') else S=SUB(S,1,IND-1)+SUB(S,IND+L2,L1) 例6.4 设有串S、子串A,求子串序号可用算法INDEX(S,A)完成。从串的第一个字符开始,每次截取长度与A相同的子串,依次从左至右进行扫描,判断是否与子串A相同,若相同,则该子串的第一个字符在串S中的位置就是所求的序号,否则从下一个字符开始重新截取,直至结束;若不存在,则序号为零。其算法如下: INDEX(s,a) /* 求子串a在串s中的序号ind */ { n=len(s);m=len(a);ind=0; if (n<m) return; /* 子串a的长度大于串s的长度,则不存在a是s的子串 */ else { i=1; while (i<=n-m) { x=SUB(s,i,i+m-1); if(x==a) { ind=i; return; } else i++; } } /* 从串s的第一个字符开始截取长度为m(子串a的长度),依次扫描 */ } 要实现用子串B置换串S中子串A的算法。同样地,在串S中从第一个字符开始扫描是否存在串A,若存在,则用B串代替;然后再次从头依次搜索,若仍存在子串A,再用串B取代,直到串S中找不到和串A相同的子串为止。由于算法中需要动态地求子串A在串S中的序号,即当前以串B代替在串S中的子串A后,再继续求串A在串S的序号,我们将调用求子串序号IND的算法INDEX

最近下载