Encoding A String function

char *encode(char *src)
{
  //Your code here
  int length = strlen(src);
  char *res=(char *)malloc(sizeof(char) * length);
  int a[5];
  int idx=0;
  int cnt=1,n,pos;
  res[idx]=src[0];
  for(int i=1;i<strlen(src);i++)
  {
        if(src[i]!=src[i-1])
        {
            n=cnt;
            if(n>=10)
            {
                pos=-1;
                while(n)
                {
                    pos+=1;
                    a[pos]=n%10;
                    n/=10;
                }
                while(pos>=0)
                {
                    idx+=1;
                    res[idx]=char(a[pos--]+'0');
                }
            }
            else
            {
                idx+=1;
                res[idx]=char(cnt+'0');
            }
            idx+=1;
            res[idx]=src[i];
            cnt=1;
        }
        else
        {
            cnt+=1;
        }
  }
  if(cnt>=10)
  {
        pos=-1;
                while(cnt)
                {
                    pos+=1;
                    a[pos]=cnt%10;
                    cnt/=10;
                }
                while(pos>=0)
                {
                    idx+=1;
                    res[idx]=char(a[pos--]+'0');
                }
   }
   else
   {
        idx+=1;
        res[idx]=char(cnt+'0');
   }
   res[idx+1]='\0';
  return res;
}

 

Comments are closed.