PHP算法之无重复字符的最长子串

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

示例 1:

输入: "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
示例 2:

输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
示例 3:

输入: "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
  请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

class Solution {

    /**
     * @param String $s
     * @return Integer
     */
    function lengthOfLongestSubstring($s) {

        $l = strlen($s); //获取字符串总长度
        $len = 0;   //记录长度
        $find = ''; //保存截取字符串

        for($i=0;$i<$l;$i++){
            $res = strpos($find,$s[$i]); // 查找$find中是否存在

            if($res !== false){

                $find.=$s[$i];

                $find = substr($find,$res+1);

            }else{
                $find.=$s[$i];
            }

            $len = strlen($find) > $len ? strlen($find) : $len;
        }
        return $len;    
    }
}

猜你喜欢

转载自www.cnblogs.com/corvus/p/11949438.html