3. Longest Substring Without Repeating Characters
- 滑動視窗的大小不固定的例子。
- 搭配 HashMap 儲存滑動視窗的 Index。
- 初始值:
curLen
,maxLen
, 左右滑動視窗的邊界i
和j
。 - for loop 移動右邊界
j
,如果發現重複的字元,更新左邊界i
。 curLen = j - i + 1
。- 不斷取最大的
maxLen
值。
class Solution {
public:
int lengthOfLongestSubstring(string s)
{
int curLen = 0, maxLen = 0;
unordered_map<char, int> m;
int left = 0;
for (int right = 0; right < s.size(); ++right)
{
if (m.count(s[right]))
{
// 如果發現重複字元,則更新左邊界
left = max(left, m[s[right]]);
}
curLen = right - left + 1;
maxLen = max(maxLen, curLen);
// 更新右邊界的位置為 right + 1
m[s[right]] = right + 1;
}
return maxLen;
}
};
- T:
- S: