双指针模拟
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param param string字符串
* @return string字符串
*/
string compressString(string param) {
// write code here
// 双指针
int lenP = param.size(); // 获取原字符串的大小
string res = ""; // 初始化结果字符串
int j = 0; // j指针初始化
for (int i = 0;;) {
int t = 0; // 每一轮当前这种字符的数量为0
// 若i指针与j指针指向的字符相等,且j指针没有超过原字符串的大小
// 说明这种种类的字符有一个了,就++
while (param[i] == param[j] && j < lenP) {
j++;
t++;
}
// 跳出循环说明遇到不相等的字符了,就往结果字符串中加入
res.push_back(param[i]);
// 若这种字符的数量比1多,就把数量加入,否则1就是不显示
if (t > 1) res += to_string(t);
i = j; // 把i指针往后挪到j指针的位置,重新定位
// 说明原字符串已经走完了
if (j >= lenP) break;
}
return res;
}
};