반복되지 않는 가장 긴 문자열의 길이를 찾는 문제다.
예를들어
abcabcda 라면, abcd or bcda = 4가 된다.
current라는 문자열 변수를 두고
현재 문자열에 포함되지 않은 문자라면 더해가면 되고,
포함되어 있다면 잘라내면 된다.
current = "abc" 인 상태에서 다음 a가 들어오게 되면
current에 존재하는 a의 index를 찾아 그 다음부터 잘라내고, current.substring(2), current = "bc"
다음으로 들어온 a를 더해준다. current += "a", current = "bcd"
/**
* @param {string} s
* @return {number}
*/
var lengthOfLongestSubstring = function (s) {
if (s.length < 2) return s.length;
let current = '';
let maxLen = 0;
for (let i = 0; i < s.length; i++) {
// substring(이상[, 미만])
// - 존재하지 않으면 0이 되어 substring되지 않음.
// - 존재하면 abcd + a 의 상황에서 a를 잘라낸 bcd + a를 해줌
current = current.substring(current.indexOf(s[i]) + 1);
current += s[i];
if (current.length > maxLen) maxLen = current.length;
}
return maxLen;
};
https://leetcode.com/problems/longest-substring-without-repeating-characters/
'Web development > Algorithm' 카테고리의 다른 글
[LeetCode] Unique Paths, Unique Paths II (javascript) (0) | 2021.06.15 |
---|---|
[LeetCode] Longest Substring Without Repeating Characters (javascript) (0) | 2021.06.15 |
[LeetCode] Repeated String Match (javascript) (0) | 2021.06.11 |
[LeetCode] Single Number (javascript) (0) | 2021.06.11 |
[LeetCode] Generate Parentheses (javascript) (0) | 2021.06.08 |
댓글