使用左右指標維護乙個邏輯上的視窗,迴圈不變數為[left, right),一開始右指標不斷向右移動,使用乙個頻率陣列freq記錄右指標經過的字元的出現次數,如果乙個字元出現次數等於2時,說明視窗內出現了乙個重複字元,這時就需要向右移動左指標,直到將重複字元移出視窗,左指標移動完成之後視窗內是沒有重複字元的,因此更新答案res
class
solution
res = math.
max(res, right - left +1)
;}return res;
}}
可以發現左指標乙個乙個移除元素太慢了,如果出現了重複出現的元素,可以直接將左指標移動到該重複字元上一次出現位置的右側,這裡需要注意的是,該重複字元上一次出現位置必須在視窗內。所以需要記錄每乙個字元出現的位置,當出現重複是left指標可以直接跳到該重複字元上一次出現位置之後(視窗內),然後跟新這個重複字元出現的位置。
class
solution
window[s.
charat
(right)
]= right;
res = math.
max(res, right - left +1)
;}return res;
}}
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.給定字串,找到最長無重複字...