koenjazh-CNfresde
짬뽕얼큰하게의 맨땅에 헤딩 :: String Compression III

Leetcode Problem:

Summary

  • Given a string word, compress it using the algorithm where a maximum length prefix of a single character c repeating at most 9 times is removed, and the length of the prefix followed by c is appended to the compressed string.

Approach

  • The approach used is to iterate through the input string and whenever a different character is encountered, the length of the previous character's prefix is appended to the compressed string, followed by the character
  • This process continues until the end of the string.

Complexity

  • O(n), where n is the length of the input string, because each character in the string is visited once.

Explanation

  • The code uses a dynamic programming approach to solve the problem
  • It first initializes a counter cnt to keep track of the length of the current character's prefix
  • It then iterates through the input string, and whenever a different character is encountered, it calculates the length of the previous character's prefix (a and b) and appends it to the compressed string
  • The counter cnt is then reset to 0 and the process continues until the end of the string.

Solution Code:


class Solution {
public:
    int str_cnt[256];
    string compressedString(string word) {
        int cnt = 0;
        char beforeChar = 'a'-1;
        string res = "";
        for(char c : word) {
            if(c != beforeChar){
                int a = cnt / 9;
                for(int i = 0 ; i < a; i++){
                    res += "9" + string(1, beforeChar);
                }
                int b = cnt % 9;
                if (b > 0){
                    res += to_string(b) + string(1, beforeChar);
                }
                cnt = 0;
            }
            cnt++;
            beforeChar = c;
        }
        int a = cnt / 9;
        for(int i = 0 ; i < a; i++){
            res += "9" + string(1, beforeChar);
        }
        int b = cnt % 9;
        if (b > 0){
            res += to_string(b) + string(1, beforeChar);
        }
        
        return res;
    }
};

'알고리즘' 카테고리의 다른 글

Find Unique Binary String  (0) 2025.02.20
Minimum Number of Changes to Make Binary String Beautiful  (0) 2025.02.20
Rotate String  (0) 2025.02.20
Delete Characters to Make Fancy String  (0) 2025.02.20
Minimum Total Distance Traveled  (0) 2025.02.20
블로그 이미지

짬뽕얼큰하게

,