Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 문자열을 최대 부분으로 분할

<시간/>

문제

문자열 str을 첫 번째이자 유일한 인수로 취하는 JavaScript 함수를 작성해야 합니다.

우리 함수의 목적은 이 문자열을 가능한 한 많은 부분으로 분할하여 각 문자가 최대 한 부분에 나타나도록 하고 이러한 부분의 크기를 나타내는 정수 배열을 반환하는 것입니다.

예를 들어 함수에 대한 입력이

인 경우

입력

const str = "ababcbacadefegdehijhklij";

출력

const output = [9, 7, 8];

출력 설명

파티션은 "ababcbaca", "defegde", "hijhklij"입니다. 이것은 각 문자가 최대 한 부분에 나타나도록 하는 파티션입니다. "ababcbacadefegde", "hijhklij"와 같은 파티션은 문자열 str을 더 적은 부분으로 분할하기 때문에 올바르지 않습니다.

예시

다음은 코드입니다 -

const str = "ababcbacadefegdehijhklij";
const splitStrings = (str = '') => {
   const res = []
   const map = {}
   for (let i = 0; i < str.length; i++) {
      map[str[i]] = i
   }
   let start = 0
   while (start <= str.length - 1) {
      let end = map[str[start]]
      for (let i = start + 1; i < end; i++) {
         const currentEnd = map[str[i]]
         if (currentEnd > end) {
            end = currentEnd
         }
      }
      res.push(end - start + 1)
      start = end + 1
   }
   return res
};
console.log(splitStrings(str));

출력

[ 9, 7, 8 ]