Skip to content

[Leetcode] 3. Longest Substring Without Repeating Characters โ€‹

Problem โ€‹

๋ฌธ์ œ ๋งํฌ ๐Ÿ”—

๋ฐ˜๋ณต๋˜๋Š” ๋ฌธ์ž๊ฐ€ ์—†๋Š” ์ตœ๊ณ ๋กœ ๊ธด ๋ฌธ์ž์—ด์˜ ๊ธธ์ด

Solution โ€‹

์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•จ. ์‹œ์ž‘๊ณผ ๋ ์ธ๋ฑ์Šค๋ฅผ ์ด๋™ํ•˜๋ฉฐ ์ค‘๋ณต์ด ์—†๋Š” ๋ฌธ์ž์—ด์„ ํ™•์ธํ•˜๊ณ  ๊ธธ์ด๋ฅผ ์ €์žฅํ•œ๋‹ค.

  1. ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค๋ฅผ ๋Š˜๋ฆฐ๋‹ค.
  2. ์‹œ์ž‘๊ณผ ๋ ์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•ด์„œ ๋ฌธ์ž์—ด์„ ์ถ”์ถœํ™”์—ฌ ๋ฐ˜๋ณต๋˜๋Š” ๋ฌธ์ž์—ด์ด ์žˆ๋Š”์ง€ ๊ฒ€์‚ฌํ•œ๋‹ค.
  3. ๋ฐ˜๋ณต์ด ์—†๋‹ค๋ฉด ๊ธธ์ด๋ฅผ ๋น„๊ตํ•˜์—ฌ ์ €์žฅํ•œ๋‹ค.
  4. 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)
}