leetcode-3.无重复字符的最长子串

2020-02-06  本文已影响0人  简简天天

3.无重复字符的最长子串
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
示例 1:
输入: "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
示例 2:
输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
示例 3:
输入: "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

class Solution
{
    /**
     * 3. 无重复字符的最长子串
     * @param string $s
     * @return int
     */
    public function lengthOfLongestSubstring($s)
    {
        // 字符串拆分成数组
        $len = strlen($s);
        if($len == 0 || $len == 1){return $len;}
        $arr = str_split($s);
        $maxLen = 1; // 假设最大长度为1
        // 遍历找出不子串并计算字
        for ($i = 0; $i < $len; $i++) {
            $tmpArr = [];
            for ($j = $i; $j < $len; $j++) {
                if (in_array($arr[$j], $tmpArr)) {
                    $maxLen = count($tmpArr) > $maxLen ? count($tmpArr) : $maxLen;
                    break;
                } else {
                    $tmpArr[] = $arr[$j];
                }
            }
            if($j == $len){
                $maxLen = count($tmpArr) > $maxLen ? count($tmpArr) : $maxLen;
                break;
            }
        }
        // 返回最大长度
        return $maxLen;
    }
}
$solution = new Solution();
$s = 'pwwkew';
print_r($solution->lengthOfLongestSubstring($s));
class Solution
{
    /**
     * 3. 无重复字符的最长子串
     * @param string $s
     * @return int
     */
    public function lengthOfLongestSubstring($s){
        $len = strlen($s); // 字符串长度
        if(($len == 0) || ($len == 1)){
            return $len;
        }
        $maxLen = 0; // 初始化最长字串长度为0
        $maxStr = ''; // 初始化最长字串
        for($i = 0; $i < $len; $i++){
            $res = strpos($maxStr, $s[$i]);
            $maxStr .= $s[$i];
            if($res !== false){
                $maxStr = substr($maxStr, $res + 1);
            }

            $maxLen = $maxLen > strlen($maxStr) ? $maxLen : strlen($maxStr);
        }
        return $maxLen;
    }
}
$solution = new Solution();
$s = 'pwwkew';
print_r($solution->lengthOfLongestSubstring($s));
class Solution
{
    /**
     * 3. 无重复字符的最长子串
     * @param string $s
     * @return int
     */
       public function lengthOfLongestSubstring($s){
        $len = strlen($s);
        if($len == 0 || $len == 1){
            return $len;
        }
        $maxLen = 0;
        $i = $j = 0;
        $arr = [];
        while ($i < $len - $maxLen && $j < $len) {
            if (isset($arr[$s[$j]])) { // 数组中已经存在$s[$j]
                unset($arr[$s[$i]]);
                $i++;
            } else { // 数组中不存在$s[$j],放到$arr
                $arr[$s[$j]] = $j;
                $j++;
                if ($j - $i > $maxLen) {
                    $maxLen = $j - $i;
                }
            }
        }
        return $maxLen;
    }
}
$solution = new Solution();
$s = 'pwwkew';
print_r($solution->lengthOfLongestSubstring($s));
class Solution
{
    /**
     * 3. 无重复字符的最长子串
     * @param string $s
     * @return int
     */
        public function lengthOfLongestSubstring($s){
       $len = strlen($s);
       if(($len == 0) || ($len == 1)){
           return $len;
       }
       $findStr = '';
       for($i=0;$i<$len;$i++){
           $pos = strrpos($findStr, $s[$i]);
           if($pos!==false){
               $findStr=substr($findStr,$pos+1);
           }
           $findStr.= $s[$i];
           $lens[] = strlen($findStr);
       }
       return max($lens)?:0;

   }
}
$solution = new Solution();
$s = 'pwwkew';
print_r($solution->lengthOfLongestSubstring($s));
class Solution
{
    /**
     * 3. 无重复字符的最长子串
     * @param string $s
     * @return int
     */
public function lengthOfLongestSubstring($s){
        $len = strlen($s);
        if($len ==0 || $len == 1){
            return $len;
        }
        $tempStr = '';
        $maxLen = $length = 0;
        for($i = 0; $i < $len; $i++){
            $pos = strpos($tempStr, $s[$i]);
            $tempStr .= $s[$i];
            if ($pos !== false){
                $tempStr = substr($tempStr, $pos + 1);
                $length = strlen($tempStr);
            }else{
                $length++;
                if($length > $maxLen){
                    $maxLen = $length;
                }
            }
        }
        return $maxLen;
    }
}
$solution = new Solution();
$s = 'pwwkew';
print_r($solution->lengthOfLongestSubstring($s));
class Solution
{
    /**
     * 3. 无重复字符的最长子串
     * @param string $s
     * @return int
     */
public function lengthOfLongestSubString($s){
        $len = strlen($s);
        if($len == 0 || $len == 1){
            return $len;
        }
        $map = [];
        $maxLen = $left = 0;
        for($i = 0; $i < $len; $i++){
            if(array_key_exists($s[$i],$map)){
                $left = max($left,$map[$s[$i]] + 1);
            }
            $map[$s[$i]] = $i;
            $maxLen = max($maxLen,$i-$left+1);
        }
        return $maxLen;
    }
}
$solution = new Solution();
$s = 'pwwkew';
print_r($solution->lengthOfLongestSubstring($s));
上一篇下一篇

猜你喜欢

热点阅读