Leetcode 443 Solution

This article provides solution to leetcode question 443 (string-compression).

https://leetcode.com/problems/string-compression

Solution

class Solution {
public:
    int compress(vector<char>& chars) {
        int tail = 0;
        char last_char = 0;
        int last_count = 0;
        
        for (int i = 0; i < chars.size(); i++)
        {
            char ch = chars[i];
            
            if (last_char == ch)
                last_count++;
            else
            {
                if (last_char)
                    chars[tail++] = last_char;
                if (last_count > 1)
                {
                    string last_count_str = to_string(last_count);
                    for (auto ch : last_count_str)
                        chars[tail++] = ch;
                }
                
                last_char = ch;
                last_count = 1;
            }
        }
        
        if (last_char)
            chars[tail++] = last_char;
        if (last_count > 1)
        {
            string last_count_str = to_string(last_count);
            for (auto ch : last_count_str)
                chars[tail++] = ch;
        }
        
        return tail;
    }
};