每日编程中遇到任何疑问、意见、建议请公众号留言或加入每日编程群聊739635399
字符串压缩,比如xxxxxdddfff,输出x5d3f3
输入格式:
输入一个仅含字母的字符串
输出格式:
输出压缩后的字符串
输入样例:
xxxxxdddfff
输出样例:
x5d3f3
解决方法:
(1)算法的基本思想:
设置一个游标,一个计数器,依次将当前的字符和游标字符比较,如果相同,计数器++,游标继续后移,如果不同,将当前的字符加入到待输出的字符串中,并加入计数器的数量。
(2)代码实现:
#include
#include
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;
}
输入格式:
输入一个10000以内的数转换为二进制数。输出格式:
转换为二进制后输出。输入样例:
1030
输出样例:
10000000110