aboutsummaryrefslogtreecommitdiff
path: root/string_compression.cpp
blob: 5f9b9c6d9f3ad5d8078719ad92d117c31f4df331 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include "leetcode.h"

class Solution {
public:
  int compress(vector<char> &chars) {
    string ans;
    int c = 1, i;
    for (i = 1; i < chars.size(); i++) {
      if (chars[i] == chars[i - 1])
        c++;
      else if (chars[i] != chars[i - 1] && c == 1)
        ans += chars[i - 1];
      else {
        ans += chars[i - 1];
        ans += to_string(c);
        c = 1;
      }
    }
    if (c == 1)
      ans += chars[i - 1];
    else
      ans += chars[i - 1] + to_string(c);
    for (int i = 0; i < ans.size(); i++)
      chars[i] = ans[i];
    vector<char>::iterator it, ty;
    it = chars.begin() + ans.size();
    ty = chars.begin() + chars.size();
    chars.erase(it, ty);
    return ans.size();
  }
};