Gene, Atul How would a string of say 257 or say 10 times a would be represented, will it be a10 or a<ascii of 10> Best Regards Ashish Goel "Think positive and find fuel in failure" +919985813081 +919966006652
On Wed, Mar 21, 2012 at 2:04 PM, atul anand <[email protected]> wrote: > wasnt able to come up with an algo which would satisfy all the cases input > like a1b1c4 here output length is equal to input length . till now i dont > knw how to handle these type of input. :( :( > > On Wed, Mar 21, 2012 at 10:02 AM, atul anand <[email protected]>wrote: > >> @Gene : yes you are right , i misunderstood the problem . so m/m >> available is just enough to hold the output. >> thanks for correcting ... that would make this ques little interesting :) >> :)...i guess my first posted code can be modified to meet the requirement. >> i will post the updated code. >> >> On Tue, Mar 20, 2012 at 5:45 PM, Gene <[email protected]> wrote: >> >>> I don't think you're seeing the requirement completely. The problem >>> promises only that the output buffer will be big enough to hold the >>> output. You have made it huge. I tried your code on an input of >>> >>> a1b1c6 >>> >>> with the required output space of 8 characters (plus 1 for the C null >>> character), and it printed >>> >>> cccccc >>> >>> and stopped. >>> >>> Last night I realized there is another approach that will work in all >>> cases, so I deleted my post. I guess it wasn't deleted on the server >>> in your part of the world. >>> >>> You all can certainly work it out. You can't just copy the input to a >>> predetermined place in the buffer before processing it. It needs to be >>> placed carefully, and it needs to be processed from both ends to a >>> certain point in the middle. >>> >>> On Mar 20, 7:32 am, atul anand <[email protected]> wrote: >>> > using Gene logic , but we need to take care of number with more than 1 >>> > digits , so updated gene's code is as follows :- >>> > >>> > #include<stdio.h> >>> > #define MAX 1000 >>> > >>> > int copy(char *str,int len) >>> > { >>> > int max_len=MAX-1,i; >>> > for(i=len-1;i>=0;i--) >>> > { >>> > str[max_len]=str[i]; >>> > max_len--; >>> > } >>> > return max_len+1; >>> > >>> > } >>> > >>> > void runLength(char *str) >>> > { >>> > unsigned int j,k=1,loop=0,res_len=0; >>> > int i,n_start; >>> > char c; >>> > /*copying input to the end of the buffer*/ >>> > n_start=copy(str,strlen(str)); >>> > >>> > for(i=MAX-1;i>=n_start;i--) >>> > { >>> > if(str[i]>='0' && str[i]<='9') >>> > { >>> > continue; >>> > } >>> > else >>> > { >>> > sscanf(&str[i],"%c%d",&c,&loop); >>> > for(j=0;j<loop;j++) >>> > { >>> > str[res_len]=c; >>> > res_len++; >>> > } >>> > } >>> > } >>> > str[res_len]='\0'; >>> > printf("\nDecoded Msg = %s\n",str); >>> > >>> > } >>> > >>> > int main() >>> > { >>> > char str[MAX]; >>> > memset(&str,0,MAX); >>> > printf("\nEnter String = "); >>> > scanf("%s",str); >>> > runLength(str); >>> > >>> > return 1; >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > } >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Algorithm Geeks" group. >>> To post to this group, send email to [email protected]. >>> To unsubscribe from this group, send email to >>> [email protected]. >>> For more options, visit this group at >>> http://groups.google.com/group/algogeeks?hl=en. >>> >>> >> > -- > You received this message because you are subscribed to the Google Groups > "Algorithm Geeks" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/algogeeks?hl=en. > -- You received this message because you are subscribed to the Google Groups "Algorithm Geeks" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/algogeeks?hl=en.
