4.2.1朴素模式匹配算法

什么是字符串的模式匹配:

4.2.1朴素模式匹配算法_第1张图片

 从这段字符串里面搜索内容,被搜索的字符串我们称之为主串。

4.2.1朴素模式匹配算法_第2张图片

 

 

也可能匹配不到

4.2.1朴素模式匹配算法_第3张图片

 4.2.1朴素模式匹配算法_第4张图片

 4.2.1朴素模式匹配算法_第5张图片

 4.2.1朴素模式匹配算法_第6张图片

 4.2.1朴素模式匹配算法_第7张图片

 4.2.1朴素模式匹配算法_第8张图片

 主串长度为n,模式串长度为m。

朴素模式匹配算法:将主串中所有长度为m的字串依次与模式串对比,直到找到一个完全匹配的字串或所有的字串都不匹配为止。

最多对比n-m+1个字串

将这些字串与模式串对比

4.2.1朴素模式匹配算法_第9张图片

 4.2.1朴素模式匹配算法_第10张图片

 

 

接下来:不使用字符串的基本操作,直接通过数组下标实现朴素模式匹配算法。

4.2.1朴素模式匹配算法_第11张图片

 4.2.1朴素模式匹配算法_第12张图片

 4.2.1朴素模式匹配算法_第13张图片

 4.2.1朴素模式匹配算法_第14张图片

 4.2.1朴素模式匹配算法_第15张图片

 4.2.1朴素模式匹配算法_第16张图片

 i跟j是相同的,当i和j我们需要将主串指针i指向下一个字串的第一个位置,模式串指针j回到模式串的第一个位置。

4.2.1朴素模式匹配算法_第17张图片

 4.2.1朴素模式匹配算法_第18张图片4.2.1朴素模式匹配算法_第19张图片

4.2.1朴素模式匹配算法_第20张图片

 

4.2.1朴素模式匹配算法_第21张图片

 返回i-T.length就是字串在主串的第一个字符的位置。

这样我们就得到了:

4.2.1朴素模式匹配算法_第22张图片

 4.2.1朴素模式匹配算法_第23张图片

  i<=S.length    如果i指针超出了S主串的长度,就会失败

 4.2.1朴素模式匹配算法_第24张图片

 4.2.1朴素模式匹配算法_第25张图片

 主串的长度往往远大于子串的长度。

4.2.1朴素模式匹配算法_第26张图片

 返回的是子串的起始位置哦!

你可能感兴趣的:(数据结构,算法)