해당 포스팅은 릿코드 3번 Longest Substring Without Repeating Characters 풀이를 다룬다. 문제 링크
코드는 Javascript로 작성했고 슬라이딩 윈도우로 풀이하였다.
Given a string s, find the length of the longest substring without repeating characters.
문자열 s가 주어질 때, 반복되는 문자 없이 가장 긴 부분 문자열의 길이를 찾아라.
Example 1
Input: s = "abcabcbb"
Output: 3
Explanation: The answer is "abc", with the length of 3.
Example 2
Input: s = "bbbbb"
Output: 1
Explanation: The answer is "b", with the length of 1.
Example 3:
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) {
let maxLength = 0,
left = 0,
chars = new Set();
for (let i = 0; i < s.length; i++) {
while (chars.has(s[i])) {
chars.delete(s[left]);
left++;
}
chars.add(s[i]);
maxLength = Math.max(maxLength, chars.size);
}
return maxLength;
};