Published Oct 06, 2021
[
 
]
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.
Input: s = “” Output: 0
0 <= s.length <= 5 * 104
s
consists of English letters, digits, symbols and spaces.function lengthOfLongestSubstring(s: string): number {
let res = 0;
let valueToIndex = {};
let leftIndex = 0;
if(s.length < 2) {
return s.length;
}
for(let rightIndex = 0; rightIndex < s.length; rightIndex++) {
let char = s[rightIndex];
if(char in valueToIndex) {
// if we find a duplicate, update leftIndex value
// The max here deals with case "abba"
leftIndex = Math.max(valueToIndex[char] + 1, leftIndex);
}
// we need keep updating the mapping and res
valueToIndex[char] = rightIndex;
res = Math.max(res, rightIndex - leftIndex + 1)
}
return res;
};