php版,求取一个字符串中不重复的最长子串的方式

直接贴代码,有好的算法,还请给与留言告知^-^

$string = "abcdaefaedkqtlmtx";
$len = strlen($string);
$resArr =[];
$tmp = [];
$i = 0;
while ($i < $len){

            $char = $string{$i};
   
            if(!array_key_exists($char, $tmp)){
                $tmp[$char]= $i;
                $i++;
                if($i !== $len) continue;
            }
            //从重复值下个开始
            $i = $tmp[$char]+1;
            if( count($tmp) > count($resArr) ){
                $resArr = $tmp;
            }
            $tmp = [];
}

$resArr = array_flip($resArr);

 

你可能感兴趣的:(综合)