Longest Substring Without Repeating Characters
Given a string s, find the length of the longest substring without repeating characters.
주어진 문자열 s에서 반복되지 않는 가장 긴 문자열의 길이를 구해라
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.
/**
* @param {string} s
* @return {number}
*/
var lengthOfLongestSubstring = function(s) {
// 전형적인 sliding window algorithm 문제여서 어렵지 않게 접근할 수 있었다
let maxLength = 0,
// {}와 Map으로 둘다 해봤더니 Map이 미세하게 결과가 좋았다,
strMap = new Map()
start = 0
for(let end = 0; end < s.length; end++) {
const char = s[end]
const charIdx = strMap.get(char)
if(charIdx >= start) {
// 반복되는 문자가 나오는 순간 start의 값을
// 이전 문자의 idx + 1 값으로 바꿔준다(새롭게 길이를 쟤야하기 때문에)
start = charIdx + 1
}
//해당 문자의 idx를 Map에 저장
strMap.set(char, end)
maxLength = Math.max(maxLength, end - start + 1)
}
return maxLength
};
Feedback은 언제나 환영입니다🤗