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;
    }
};