본문 바로가기
Web development/Algorithm

[LeetCode] Longest Substring Without Repeating Characters (javascript)

by 자몬다 2021. 6. 11.

반복되지 않는 가장 긴 문자열의 길이를 찾는 문제다.

 

예를들어

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/

댓글