[LeetCode] 443. String Compression

Chobby·2026년 2월 25일

LeetCode

목록 보기
1007/1023

😎풀이

  1. chars 순회
    1-1. 이전 문자와 다른 문자열이 나왔을 경우, 현재까지 연속된 문자열의 빈도와 문자를 결합시켜 추가
    1-2. 동일 문자가 나왔을 경우 누적
  2. 원본배열인 chars를 직접 수정하여 변경된 압축형 문자열 적용
  3. 압축형 문자열의 길이 반환
function compress(chars: string[]): number {
    let stack = [chars[0]]
    let compressedStr = ''
    for(let i = 1; i < chars.length; i++) {
        const char = chars[i]
        const stackLetter = stack[0]
        if(char === stackLetter) {
            stack.push(chars[i])
        } else {
            let joinedStack = stackLetter
            if(stack.length > 1) {
                joinedStack += stack.length
            }
            compressedStr += joinedStack
            stack = [char]
        }
    }
    if(stack.length) {
        const stackLetter = stack[0]
        let joinedStack = stackLetter
        if(stack.length > 1) {
            joinedStack += stack.length
        }
        compressedStr += joinedStack
    }
    chars.splice(0, chars.length, ...compressedStr);
    return compressedStr.length
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글