문제
문자열 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 ]