题目:
连续字符出现次数,保证字符串内均由大小写字母组成
如:aaabccccaa
压缩为:a3b1c4a2
思路:
先往新数组中填入一个字母,然后循环并记录个数直到当前字母不等于前一个字母,则填入数字并清0重新计算接着填入当前字母,最后在循环外填入最后一次的数字
代码:
#include <stdio.h>
#include <string.h>
int main()
{
char ch[] = "aaabccccaaF";
int len = strlen(ch); //获取ch长度
int count = 0, p = 0;
int * cm = new int[len*2]; //创建数组存放压缩后的字符串
for (int i = 0; i < len; i++)
{
if (count == 0) //第一遍循环进入
{
cm[p] = ch[i]; //填入字母
p++;
}
if (ch[i - 1] != ch[i] && i != 0) //第二遍往后符合条件进入,当前一个和当前字母不相同时
{
cm[p] = count + '0'; //数字转ascll,并填入
p++;
count = 1;
cm[p] = ch[i]; //填入字母
p++;
}
else
{
count++;
}
}
cm[p] = count + '0';//数字转ascll,并填入
p++;
for (int i = 0; i < p; i++)
{
printf("%c", cm[i]);
}
return 0;
}