Skip to main content

3.js

/** ------------------------------------------------------------------------------
*
* 3. Longest Substring Without Repeating Characters
* Topics: Hash Table, Sliding Window
* https://leetcode.com/problems/longest-substring-without-repeating-characters/description/
*
------------------------------------------------------------------------------ */
/**
* @param {string} s
* @return {number}
*/
var lengthOfLongestSubstring = function (s) {
let i = 0
let res = 0
const map = new Map()

for (let j = 0; j < s.length; j++) {
const index = map.get(s[j])
if (index !== undefined && index >= i) {
i = index + 1
}
res = Math.max(res, j - i + 1)
map.set(s[j], j)
}

return res
}

/**
* @param {string} s
* @return {number}
*/
var lengthOfLongestSubstring = function (s) {
let len = s.length
let left = 0,
right = 0
let answer = 0

const set = new Set()

while (right < len) {
if (set.has(s[right])) {
set.delete(s[left])
left++
} else {
set.add(s[right])
right++
}

answer = Math.max(set.size, answer)
}

return answer
}

console.log(lengthOfLongestSubstring("abcabcbb"))