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: