给定一个string iniString为待压缩的串(长度小于等于3000),保证串内字符均由大小写英文字母组成,返回一个string,为所求的压缩后或未变化的串。
思路:咋一分析,题目还是很简单的,设置一个游标,一个计数器,依次将当前的字符和游标字符比较,如果相同,计数器++,游标继续后移,如果不同,将当前的字符加入到待输出的字符串中,并加入计数器的数量
class Zipper {
public:
string zipString(string iniString) {
// write code here
string str;
char ch = iniString[0];
int count = 1;
for (int i = 1; i < iniString.length(); i++){
if (iniString[i] == ch){
count++;
}
else{
str.push_back(ch);
str += to_string(count);
count = 1;
ch = iniString[i];
}
}
str.push_back(ch);
str += to_string(count);
return str.length() < iniString.length() ? str : iniString;
}
};