问题:
字符串压缩,比如xxxxxdddfff,输出x5d3f3
算法思想:
设置一个游标,一个计数器,依次将当前的字符和游标字符比较,如果相同,计数器++,游标继续后移,如果不同,将当前的字符加入到待输出的字符串中,并加入计数器的数量
#include <iostream>
#include <string>
using namespace std;
#define MAX_SIZE 100 //假设字符长度最大为100
string compress(string iniString) {
string str;
int count = 1;
for (int i = 0; i < iniString.length(); i++){
if (iniString[i] == iniString[i + 1]){
count++;
continue;
}
str += iniString[i];
str += to_string(count);
count = 1;
}
if (str.length() >= iniString.length())
return iniString;
return str;
}
int main() {
char str[MAX_SIZE];
cin >> str;
string s = compress(str);
cout << s << endl;
system("pause");
return 0;
}