Given a string s, find the length of the longest substring without repeating characters.
Input: s = "abcabcbb"
Output: 3
Explanation: The answer is "abc", with the length of 3.
Input: s = "bbbbb"
Output: 1
Explanation: The answer is "b", with the length of 1.
Input: s = "pwwkew"
Output: 3
Explanation: The answer is "wke", with the length of 3.
Notice that the answer must be a substring, "pwke" is a subsequence and not a substring.
class Solution
{
public:
int lengthOfLongestSubstring(string s)
{
int lp = 0;
int maxLength = 0;
unordered_set<char> charSet;
for (int rp = 0; rp < s.length(); rp++)
{
while (charSet.find(s[rp]) != charSet.end())
{
charSet.erase(s[lp]);
lp++;
}
charSet.insert(s[rp]);
maxLength = max(maxLength, rp - lp + 1);
}
return maxLength;
}
};