题目描述:https://leetcode.com/problems/string-compression/
看清题目要求:1.在原字符串上替换
2.单独一个字符不用加数字
3.最后返回替换后字符串的长度
直接在原字符串上替换需要三个变量:i是读取的字符首位置,j是相同字符的最后位置+1(利用i,j统计某字符出现的次数),next记录新字符串下一个将要添加的位置。
class Solution {
public:
int compress(vector<char>& chars) {
if (chars.size()==0) return 0;
if (chars.size()==1) return 1;
int i = 0;
int next = 0;
while (i<chars.size())
{
int j = i;
while (j<chars.size() && chars[j] == chars[i]) j++;
chars[next] = chars[i];
string tmp = to_string(j - i);
if (j - i>1)
{ string tmp = to_string(j - i);
for (int k = 0; k<tmp.size(); k++)
chars[next + k + 1] = tmp[k]; next = next + tmp.size()+1;
}
else next++;
i = j;
}
return next;
}
};