1. 程式人生 > 其它 >LeetCode--無重複字元的最長子串

LeetCode--無重複字元的最長子串

技術標籤:PHP

給定一個字串,請你找出其中不含有重複字元的 最長子串 的長度。
示例 1:
輸入: s = "abcabcbb"
輸出: 3
解釋: 因為無重複字元的最長子串是 "abc",所以其長度為 3。

示例 2:
輸入: s = "bbbbb"
輸出: 1
解釋: 因為無重複字元的最長子串是 "b",所以其長度為 1。

示例 3:
輸入: s = "pwwkew"
輸出: 3
解釋: 因為無重複字元的最長子串是 "wke",所以其長度為 3。
請注意,你的答案必須是 子串 的長度,"pwke" 是一個子序列,不是子串。

示例 4:
輸入: s = ""
輸出: 0

提示:
0 <= s.length <= 5 * 104
s 由英文字母、數字、符號和空格組成

答案

<?php

class Solution {

    /**
     * @param String $s
     * @return Integer
     */
    function lengthOfLongestSubstring($s) {
        $l = strlen($s); //獲取字串總長度
        $startIndex = 0;   //開始搜尋的位置
        $r = 0; //字串的長度

        for($i=0; $i<$l; $i++){
            $pos = strpos($s, $s[$i], $startIndex);
            if($pos<$i){//出現重複
                $startIndex = $pos + 1;
            }

            $l1 = $i-$startIndex+1;
            $r = $l1>$r ? $l1 : $r;
        }

        return $r;
    }
}