題目描述:
給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。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 ...