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