KMP字符串模式匹配算法实现(php)
2012-11-13 18:52
961 查看
用php实现KMP字符串模式匹配算法
KMP算法是基于BF朴素模式匹配算法之上改进来的:主要在解决当Tn != Pn时,Tn的指针不回朔,那么接下来它应该与模式串的第几个字符(next数组)再进行比较的问题。
<?php // KMP算法实现 function indexOf($target,$pattern,$start){ if($target && $pattern && strlen($target)>strlen($pattern)){ echo "target:$target<br/>pattern:$pattern<br/>"; $i = $start; $j = 0; $next = getNext($pattern); while ($i<strlen($target)){ if ($j==-1||$target{$i}==$pattern{$j}){ $i++;$j++; }else $j = $next[$j]; //echo "i:$i,j:$j<br/>"; if ($j==strlen($pattern)) return 'offset: '.($i-$j); } } return -1; } // 获取模式串的next数组的函数 function getNext($pattern){ $j=0;$k=-1; $next[0] = -1; while ($j<strlen($pattern)-1){ if ($k==-1||$pattern{$j} == $pattern{$k}){ $k++;$j++; $next[$j] = $k; }else $k = $next[$k]; } return $next; } $strs = "abcabdcdbabcacdabcabcde"; $mystr = "abcabc"; echo indexOf($strs,$mystr,0);
相关文章推荐
- KMP字符串模式匹配算法实现
- KMP字符串模式匹配算法Java实现
- KMP字符串模式匹配算法实现
- KMP字符串模式匹配算法实现
- java实现字符串的一般和KMP模式匹配算法
- KMP字符串模式匹配算法实现
- KMP字符串模式匹配算法实现
- 字符串模式匹配算法——BM、Horspool、Sunday、KMP、KR、AC算法
- 改良的KMP字符串模式匹配算法
- KMP 字符串模式匹配算法
- KMP字符串模式匹配算法最详解
- 数据结构编程笔记十一:第四章 串 定长顺序串以及模式匹配算法(BF和KMP)的实现
- KMP模式匹配算法中next,nextval的分别实现
- 字符串KMP模式匹配算法
- 理解与实现KMP模式匹配算法
- 字符串模式匹配算法——BM、Horspool、Sunday、KMP、KR、AC算法一网打尽
- 简单字符串模式匹配算法的C++实现
- KMP模式匹配算法C++实现
- 转载网络上最简单易懂的KMP模式匹配算法——外加代码实现
- 字符串模式匹配算法——BM、Horspool、Sunday、KMP、KR、AC算法