[Leetcode] 3. Longest Substring Without Repeating Characters
Problem
반복되는 문자가 없는 최고로 긴 문자열의 길이
Solution
슬라이딩 윈도우 방법을 사용함. 시작과 끝 인덱스를 이동하며 중복이 없는 문자열을 확인하고 길이를 저장한다.
- 마지막 인덱스를 늘린다.
- 시작과 끝 인덱스를 이용해서 문자열을 추출화여 반복되는 문자열이 있는지 검사한다.
- 반복이 없다면 길이를 비교하여 저장한다.
- 2번 작업을 진행한다. 문자열에 반복이 있다면 시작 인덱스를 늘린다.
JS Code
js
/**
* @param {string} s
* @return {number}
*/
var lengthOfLongestSubstring = function(s) {
let [start, end] = [0,0]
let maxLen = 0
while(end <= s.length) {
if (isRepeatChar(s.substring(start, end))) {
start++
continue;
}
maxLen = Math.max(maxLen , end-start)
end++
}
return maxLen
};
const isRepeatChar = (str) => {
return !!Array.from(str)
.find((item, idx, arr) => arr.indexOf(item) !== idx)
}