leecode-找出其中不含有重复字符的 最长子串 的长度


给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
这道题主要用到思路是:滑动窗口

class Solution { /** * @param String $s * @return Integer */ function lengthOfLongestSubstring($s) { $len = strlen($s); $sarr = str_split($s,1); $varr = array_flip($sarr); $arr = []; $left =0; $mmmm = 0; for($left; $left<$len; $left++){ //存在就修改长度 if (in_array($sarr[$left], $arr)){ //计算当前最大值 $max_len = count($arr); //已存在数组的位置 $ak = 0 ; foreach ($arr as $kkk => $vvv){ if($vvv == $sarr[$left]){ $ak=$kkk; break; } } //删除已存元素位置以及之前的元素 for($j=0;$j<=$ak;$j++){ if(isset($arr[$j])) unset($arr[$j]); } //尾部-首部 // echo 'letf:',$left,'ak:'.$ak; $mm = $left-$ak; // echo 'letf:',$left,'ak:'.$ak,'mm:'.$mm.'-'.$max_len.'--'; // echo $mmmm,'-'.$mm.'-||'; if($mmmm<$mm) $mmmm=$mm; //var_dump($max_len,$mm,$mmmm); //echo '-----------'; $arr[$left] = $sarr[$left]; // var_dump($arr); }else{ //echo $sarr[$left]; $arr[$left] = $sarr[$left]; $mmmm = $mmmm<count($arr)?count($arr):$mmmm; // var_dump($arr,$mmmm); // echo $arr[$left] , '-',$mmmm,"||||||||||||||||||||"; } // echo $mmmm,'||'; } return $mmmm; } }

  

猜你喜欢

转载自www.cnblogs.com/dennylau/p/11725434.html
今日推荐