LeetCode-無重複字元的最長子串
阿新 • • 發佈:2020-07-31
LeetCode-無重複字元的最長子串
題目
給定一個字串,請你找出其中不含有重複字元的 最長子串 的長度。
示例 1:
輸入: "abcabcbb"
輸出: 3
解釋: 因為無重複字元的最長子串是 "abc",所以其長度為 3。
示例 2:
輸入: "bbbbb"
輸出: 1
解釋: 因為無重複字元的最長子串是 "b",所以其長度為 1。
示例 3:
輸入: "pwwkew"
輸出: 3
解釋: 因為無重複字元的最長子串是 "wke",所以其長度為 3。
請注意,你的答案必須是 子串 的長度,"pwke" 是一個子序列,不是子串。
思路
很容易想到用滑動視窗,保證視窗中的字串不重複,然後取字串的最大值:
程式碼
class Solution { public: int lengthOfLongestSubstring(string s) { int ans = 0, i = 0, j = 0; int strLength = s.length(); if (strLength == 0) return 0; int charRecord[129] = {0}; for (i=0; i<strLength; i++) { char c = s[i]; ++charRecord[c]; if (charRecord[c] > 1) { while (s[j] != c){ --charRecord[s[j]]; ++j; } --charRecord[s[j]]; ++j; } ans = max(ans, i-j+1); } return ans; } };