我有一个大字符串 char myStr="AAAABBBCCCCCCDDDEFGHHIJJ"。
我要将这个字符串传递给我的字符串压缩函数,该函数应以以下格式返回字符串 myStr ="A4B3C6D3EFGH2IJ2"。
此外,新的字符串替换应在同一传递的字符串中进行。 不能创建临时数组。
下面是我的函数,我无法弄清楚如何删除重复项并在同一字符串中用其计数进行替换。
下面是我的函数,我无法弄清楚如何删除重复项并在同一字符串中用其计数进行替换。
#include<stdio.h>
#include<string.h>
char* StrCompress(char myStr[])
{
char *s = myStr;
int len = strlen(myStr);
char *in = myStr;
int count =0;
int i=0;
while(*(s) != '\0')
{
if(*(s)==*(s+1))
{
count++;
if(count == 1)
{
in = s;
}
s++;
}
else
{
//myStr[count-1]=count;
memcpy(in+1,s+1,count);
s=in;
count =0;
}
i++;
}
return myStr;
}
int main(){
char myStr[] ="AAAABBBCCCCCEEFGIIJJJKLMNNNNOOO";
printf("Compressed String is : %s\n",StrCompress(&myStr));
return 0;
}