3 無重複字元的最長字串

2021-10-11 04:25:54 字數 1064 閱讀 7611

題目描述:

給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。s 由英文本母、數字、符號和空格組成。

例項:輸入: s = 「abcabcbb」

輸出: 3

解釋: 因為無重複字元的最長子串是 「abc」,所以其長度為 3。

link

解題思路:滑動視窗

(1) 我們使用兩個指標表示字串中某個子串的左右邊界。其中左指標代表「列舉子串的起始位置」,而右指標即為不包含重複字元的最長子串的結束位置 rk;

(2) 在每一步的操作中,我們會將左指標向右移動一格,表示 我們開始列舉下乙個字元作為起始位置,然後我們可以不斷地向右移動右指標,但需要保證這兩個指標對應的子串中沒有重複的字元。在移動結束後,這個子串就對應著 以左指標開始的,不包含重複字元的最長子串。我們記錄下這個子串的長度;

(3) 在列舉結束後,我們找到的最長的子串的長度即為答案。

class

solution

int inlen = s.

length()

;int result =0;

int left =0;

// 左指標初始位置

int right =0;

// 右指標初始位置

hashset

subset =

newhashset

<

>()

; subset.

add(s.

charat(0

));// 先把第0個字元放入set

while

(left < inlen)

result = math.

max(result, right - left +1)

;if(right +

1== inlen)

subset.

remove

(s.charat

(left));

left ++;}

return result;

}}

3 無重複字元的最長字串

給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwkew 輸出 3 ...

3 無重複字元的最長字串

給定乙個字串,找出不含有重複字元的最長子串的長度。示例1 輸入 abcabcbb 輸出 3 解釋 無重複字元的最長子串是 abc 其長度為 3。示例2 輸入 bbbbb 輸出 1 主要思想 滑動視窗 使用乙個容器儲存遍歷的字元。遍歷字串,同時將不重複的字元儲存到視窗中,視窗的右邊界加一,相當於向右滑...

3 無重複字元的最長子串 字串

給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwkew 輸出 3 ...