首页 > 代码库 > PHP KMP算法实现
PHP KMP算法实现
function getNext( $str ){ $ret = array(0=>0); for( $j =1; $j < strlen($str); $j++ ){ $_s = substr( $str, 0, $j+1 ); $_ln = strlen($_s); $ret[$j] = 0; for( $i = 1; $i< $_ln; $i++ ){ $start = substr($_s, 0 ,$i); $end = substr($_s, -$i); if($start == $end){ $ret[$j] = $i; } } } return $ret;}function _strpos( $str, $sstr, $p = 0 ){ $rt = false; //返回结果 $l1 = strlen($sstr); $l2 = strlen($str); if($l1 > $l2) return $rt; $i = $p; $j = 0; $next = getNext($sstr); while( $i< $l2 && $j < $l1 ){ echo "i:".$i." iv:".$str[$i]." j:".$j." jv:".$sstr[$j]."<br>"; if( $j == 0 || $sstr[$j] == $str[$i] ){ ++$i; ++$j; }else{ $j = $next[$j-1]; } } if( $j == $l1 ) return $i - $l1; else return $rt; }var_dump( _strpos( "aabaaab" ,"aaa" ) );
PHP KMP算法实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。