Leetcode3 無重複字元的最長子串長度

2022-07-20 02:27:12 字數 1221 閱讀 3555

題目:給定乙個字串string,找出string中無重複字元的最長子串。

舉例:given"abcabcbb", the answer is"abc", which the length is 3.

given"bbbbb", the answer is"b", with the length of 1.

given"pwwkew", the answer is"wke", with the length of 3. note that the answer must be asubstring,"pwke"is a subsequence and not a substring.

思路:首先,因為找的是無重複的子串,因此我們使用hashset結構來存放已經找到的字元,hashset中儲存的是從某個位置pre到另乙個位置i中間的所有字元。

從頭開始遍歷給定的字串s, 每遍歷乙個,判斷hashset中是否有該字元,假設此時遍歷到i位置:

1: 如果沒有,就將字元加入hashset, 表明子串的長度又增大了乙個,即prev~i位置的字串是無重複字元的,更新最長字串的長度max_str;

2: 如果有,就從prev位置開始迴圈遍歷,直到找到與i位置字元相等的那個字元,然後prev指向那個字元位置+1的位置,i繼續遍歷。

直到i==len結束遍歷。但此時還應該計算一次max(i-prev, max_str)的大小,最後一次更新max_str的大小,返回最終的max_str;

擴充套件:假設本題要求找出無重複的最長子串,則需要用兩個變數儲存視窗的左右位置,每當max_str更新的時候,就需要更新此時的視窗左右位置。最終使用s.substring(left, right)獲取最長子串。

本題**:

1

public

class

solution

21 pre ++;22}

23else

2427 i++;28}

29 max_str = math.max(max_str, i - pre); //

i一直向後,直到超出s的長度,此時也要計算視窗的大小

30return

max_str;

3132

}33 }

leetcode 3 無重複的字串

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

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

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

leetcode 3 最長無重複字串

3.longest substring without repeating characters 題面 given a string,find the length of the longest substring without repeating characters.給定字串,找到最長無重複字...