Bleeding edge

[LeetCode] 3. Longest Substring Without Repeating Characters - 자바스크립트 0614 본문

코딩테스트 공부

[LeetCode] 3. Longest Substring Without Repeating Characters - 자바스크립트 0614

codevil 2022. 6. 14. 14:10

https://leetcode.com/problems/longest-substring-without-repeating-characters/

 

Longest Substring Without Repeating Characters - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

주어진 str으로 글자가 겹치지 않게 str을 붙여라!이다. 예시문자를

"abcabcbb"라고 하면

"abc" -> "abc" + "b"를 한다고하면 b가 이미 있기때문에 x!

그리고 단어를 만들 때는, 무조건 연속으로 붙여서 만들어야한다.

문제 풀이방법은 다음과같다!

0. 빈 answer와, 0인 max를 만든다

  let answer = "";
  let max = 0;

1. s.length를 기준으로 loop를 만든다!

  for (let i = 0; i < s.length; i++) {
  
  }

2. answer가 s[i]를 가지고 있는지 조건문을 만든다

    if (!answer.includes(s[i])) {
    
    }

2-1만일 가지고 있지 않다면 answer에 s[i]를 더하고 가지고 있으면, s[i]를 가지고 있지 않을 때까지 answer.slice(1)을 반복한다. 그리고 가지고 있지 않은 경구가 되면 answer에 s[i]를 더한다

    if (!answer.includes(s[i])) {
      answer += s[i];
    } else {
      while (answer.includes(s[i])) {
        answer = answer.slice(1);
      }
      answer += s[i];
    }

3. for문이 끝나기전에 max보다 answer.length가 더크다면 max는 answer.length이다

    if (max < answer.length) {
      max = answer.length;
    }

전체코드

var lengthOfLongestSubstring = function (s) {
  let answer = "";
  let max = 0;
  for (let i = 0; i < s.length; i++) {
    if (!answer.includes(s[i])) {
      answer += s[i];
    } else {
      while (answer.includes(s[i])) {
        answer = answer.slice(1);
      }
      answer += s[i];
    }
    if (max < answer.length) {
      max = answer.length;
    }
  }
  return max;
};