Skip to main content

Longest Substring Without Repeating Characters

Problem statement

Given a string s, find the length of the longest substring without repeating characters.

Example 1:

Input: s = "abcabcbb"Output: 3Explanation: The answer is "abc", with the length of 3.

Example 2:

Input: s = "bbbbb"Output: 1Explanation: The answer is "b", with the length of 1.

Example 3:

Input: s = "pwwkew"Output: 3Explanation: 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.

Constraints:

  • 0 <= s.length <= 5 * 104
  • s consists of English letters, digits, symbols and spaces.

My solution

/**
* @param {string} s
* @return {number}
*/
var lengthOfLongestSubstring = function(s) {
let start = 0;
let end = 0;
let memo = new Set();
let count = Number.MIN_SAFE_INTEGER;

while (end < s.length) {
const char = s.charAt(end);

if (memo.has(char)) {
while (memo.has(char)) {
const firstChar = s.charAt(start);
memo.delete(firstChar);
start++
}
}
else {
memo.add(char);
const len = end - start + 1;
count = Math.max(len, count)
end++
}
}

return count === Number.MIN_SAFE_INTEGER ? 0 : count;
};