題目描述:
請從字串中找出乙個最長的不包含重複字元的子字串,計算該最長子字串的長度。
示例 1:
輸入: 「abcabcbb」
輸出: 3
解釋: 因為無重複字元的最長子串是 「abc」,所以其長度為 3。
示例 2:
輸入: 「bbbbb」
輸出: 1
解釋: 因為無重複字元的最長子串是 「b」,所以其長度為 1。
示例 3:
輸入: 「pwwkew」
輸出: 3
解釋: 因為無重複字元的最長子串是 「wke」,所以其長度為 3。
請注意,你的答案必須是 子串 的長度,「pwke」 是乙個子串行,不是子串。
思路1:
o(n²)時間複雜度暴力遍歷
class
solution
else}}
return length;}}
;
思路2:
hash表+雙邊界指標
輪廓:兩個最近重複之間的字元是不重複的,確定左右邊界,使得邊界裡無重複字元。
實現:①hash表以字元為索引存下該字元最新出現的位置,右邊界遍歷字串,左邊界更新重複兩字元中第乙個字元的位置,則左右邊界之間為不重複字元。
②比較上次邊界差值和當前邊界差值,取最大值
時間複雜度o(n)空間複雜度o(1)
//特殊情況:空字串
//特殊情況:只有乙個字元的字串
//兩個最近重複之間的字元是不重複的,確定左右邊界,使得邊界裡無重複字元
//比較上次邊界差值和當前邊界差值,取最大值
class
solution
return length;}}
;
思路3:
動態規劃以後再說。
面試題48 最長不含重複字元的子字串
請從字串中找出乙個最長的不包含重複字元的子字串,計算該最長子字串的長度。假設字串中只包含a z的字元。例如,在字串 arabcacfr 中,最長的不含重複字元的子字串是 acfr 長度為4。我們定義函式f i 表示以第i個字元為結尾的,不包含重複字元的子字串的最長長度。我們從左到右逐一掃瞄字串中的每...
面試題48 最長不含重複字元的子字串
題目 請從字串中找出乙個最長的不包含重複字元的子字串,計算該最長子字串的長度。示例 示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 p...
面試題48 最長不含重複字元的子字串(C )
請從字串中找出乙個最長的不包含重複字元的子字串,計算該最長子字串的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwkew ...