/**
* @param {string} s
* @return {number}
*/
var lengthOfLongestSubstring = function (s) {
const len = s.length
let substringHash = {},
count = 0,
maxCount = 0,
i = 0,
j = 0
while (i < len) {
const char = s[i]
if (substringHash[char] === undefined) {
substringHash[char] = i
count++
} else {
maxCount = Math.max(count, maxCount)
let k = substringHash[char] + 1
j = k
count = 0
substringHash = {}
while (k <= i) {
substringHash[s[k]] = k
count++
k++
}
}
i++
}
return Math.max(count, maxCount)
}
//Test cases
console.log(lengthOfLongestSubstring('abcabcbb'))
console.log(lengthOfLongestSubstring('bbbbb'))
console.log(lengthOfLongestSubstring('pwwkew'))
console.log(lengthOfLongestSubstring('dvdf'))
console.log(lengthOfLongestSubstring('abba'))
console.log(lengthOfLongestSubstring('jbpnbwwd'))