用经典的双指针操作,这里实际上是三个指针在动,最前面的是答案数组k
class Solution {
public:
int compress(vector<char>& chars) {
int k = 0;
for(int i=0,j=0;j<chars.size();j++){
while(j<chars.size()&&chars[i]==chars[j]) j++;
j--;
chars[k++] = chars[i];
if(j!=i){
string num = to_string(j-i+1);
for(auto c:num){
chars[k++] = c;
}
}
i = j+1;
}
return k;
}
};