博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP KMP算法实现
阅读量:7256 次
发布时间:2019-06-29

本文共 965 字,大约阅读时间需要 3 分钟。

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]."
"; 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" ) );

 

转载地址:http://jycdm.baihongyu.com/

你可能感兴趣的文章