这题主要考的还是字符串的操作,直接上代码
class Solution {
public:
string compressString(string s) {
//用双指针
int i = 0;
int j = 0;
int sum = 0;
string s1 = ""; //定义一个空字符串
while(j<=s.size())
{
if(s[i] != s[j])
{
sum = j-i;
s1+=s[i];
//这里要分开讨论:因为数字的ASCII值只有0到9,所以大于10就要做取余操作
if(sum>=10)
{
string s2 = "";
//这里也可以用栈来做
while(sum)
{
int n = sum%10;
s2+=n+'0';
sum/=10;
}
reverse(s2.begin(),s2.end()); //反转字符串
s1+=s2;
}
else
{
s1+=sum+48;
}
sum = 0;
i = j;
}
else
{
j++;
}
}
return s1.size()>=s.size()?s:s1;
}
};