数据结构c语言版严蔚敏清华大学出版社第四章串.ppt

数据结构c语言版严蔚敏清华大学出版社第四章串.ppt

数据结构c语言版严蔚敏清华大学出版社第四章串

模式匹配(定位) 设有主串S和子串T(将S称为目标串,将T称为模式串),在主串S中,从位置start开始查找,如若在主串S中找到一个与子串T相等的子串,则返回T的第一个字符在主串中的位置,否则返回-1。 算法目的 确定主串中所含子串第一次出现的位置(定位) 算法种类 BF算法 (又称古典的、经典的、朴素的、穷举的) KMP算法 Brute-Force算法的设计思想: 将主串S的第一个字符和模式T的第1个字符比较, 若相等,继续逐个比较后续字符; 若不等,从主串S的下一字符起,重新与T第一个字符比较。 直到主串S的一个连续子串字符序列与模式T相等。返回值为S中与T匹配的子序列第一个字符的序号,即匹配成功。 否则,匹配失败,返回值 –1。 BF算法的时间复杂度 讨论: 若n为主串长度,m为子串长度,则串的BF匹配算法最坏的情况下需要比较字符的总次数为(n-m+1)*m=O(n*m) 最好的情况是:一配就中! 只比较了m次。 最恶劣情况是:主串前面n-m个位置都部分匹配到子串的最后一位,即这n-m位比较了m次,别忘了最后m位也各比较了一次,还要加上m!所以总次数为:(n-m)*m+m =(n-m+1)*m KMP算法设计思想: 设s为主串,t为模式串,设i为主串s当前比较字符的下标

文档评论(0)

1亿VIP精品文档

相关文档