[leetcode 100] 763. Partition Labels (JS)

devmomo·2021년 4월 13일
0

알고리즘

목록 보기
50/52
post-thumbnail

763. Partition Labels

문제
문자열 s가 소문자 영문으로 주어질 때, 파티션을 나누려고 한다.
파티션마다 중복되는 문자는 없어야하고, 가능한 최대의 파티션의 수를 나
눈다고 가정했을 때 파티션 각 길이를 배열로 리턴하는 solution 만들기

풀이
medium난이도라 그런지 문제가 한번 더 꼬인 느낌이라서 차근차근 풀어봤다.

var partitionLabels = function (S) {
  const answer = [];
  let left = 0;
  while (left < S.length) {
    let start = left;
    let right = S.lastIndexOf(S[left]);
    while (left < right) {
        left++;
        let temp = S.lastIndexOf(S[left]);
        right = Math.max(right, temp);
    }
    left++;
    answer.push(right - start + 1);
  }
  return answer;
};

left, start, right의 3가지 포인터를 활용해서 answer 배열에 각 파티션의 사이즈를 담아 리턴
while문 중간의 left++의 경우 빌트인 메서드 lastIndexOf에서 [left]자리에 표현식인 left++를 넣어 해결할 수도 있음

profile
FE engineer

0개의 댓글