面試題48 最長不含重複字元的子字串

2021-10-06 05:22:58 字數 995 閱讀 9985

題目描述:

請從字串中找出乙個最長的不包含重複字元的子字串,計算該最長子字串的長度。

示例 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 ...