If abcdef is changed to a1b1c1d1e1f1, then we need to allocate memory dynamically. Because length is increased,I think this has no practical implementation.As "abcdef " serves the same purpose.
On Sunday, 3 June 2012 09:36:25 UTC+5:30, utsav sharma wrote: > > @ashish:-algo given in link wiil fail for "abcdef" > > @navin:- output of "abcdef" should be "1a1b1c1d1e1f" > > On Sun, May 27, 2012 at 3:24 PM, Ashish Goel <ashg...@gmail.com> wrote: > >> Will fail for the sing having say 257characters all same >> >> Best Regards >> Ashish Goel >> "Think positive and find fuel in failure" >> +919985813081 >> +919966006652 >> >> >> On Sat, May 26, 2012 at 12:26 PM, Navin Gupta <navin.nit...@gmail.com>wrote: >> >>> This is called Run-Length-Encoding (RLE) of a string. >>> Its purpose is to save space.So in case of abcdef,I think the output >>> needed is abcdef (1 is implicit). >>> The added benefit is it makes the solution in-place. >>> >>> Approach:- (In-place and Linear Time) >>> Start from the left of string and PREVIOUS_CHAR = str[0] >>> move forward till u match the CURRENT_CHAR with PREVIOUS_CHAR and keep >>> count of PREVIOUS_CHAR >>> At any point if (PREVIOUS_CHAR!=CURRENT_CHAR) >>> put the count of prev_char next to the start position of the previous >>> character. >>> >>> Below is the working code :- >>> void torle(char *str) >>> { int i=0,j=0,k=0,cnt=1; >>> char cur_char=str[0],num[100]; >>> while(str[j+1]) >>> { >>> cnt=1; >>> while(str[j+1]==cur_char && str[j]!='\0'){ >>> j++; >>> cnt++; >>> } >>> str[i++]=cur_char; >>> if( cnt>9 ){ >>> itoa(cnt,num); >>> k=0; >>> while(num[k]) str[i++]=num[k++]; >>> } >>> else if( cnt>1 && cnt<10 ) >>> str[i++]= cnt+'0'; >>> j++; >>> if(str[j]) cur_char=str[j]; >>> } >>> if(i!=0){ >>> if(cnt==1) >>> str[i++]=cur_char; >>> str[i]='\0'; >>> >>> } >>> } >>> >>> >>> On Saturday, 26 May 2012 04:32:35 UTC+5:30, utsav sharma wrote: >>>> >>>> Implement a method to perform basic string compression using the counts >>>> of repeated characters.(inplace) >>>> >>>> eg:- input: "aaabbbbbcdef" >>>> output:"3a5b1c1d1e1f". >>>> >>>> what should be my approach to this problem >>>> >>>> if i calculate the size of array required to store the output string >>>> and start from the last of the array then i wldn't get the right answer >>>> of above input case. >>>> >>>> and if start from front then i wldn't get the right answer of this >>>> input case >>>> eg:- input: "abcdef" >>>> output: "1a1b1c1d1e1f" >>>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Algorithm Geeks" group. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msg/algogeeks/-/4LxWHEUJuK8J. >>> >>> To post to this group, send email to algogeeks@googlegroups.com. >>> To unsubscribe from this group, send email to >>> algogeeks+unsubscr...@googlegroups.com. >>> 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 algogeeks@googlegroups.com. >> To unsubscribe from this group, send email to >> algogeeks+unsubscr...@googlegroups.com. >> 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 view this discussion on the web visit https://groups.google.com/d/msg/algogeeks/-/gM8fEXZNskkJ. To post to this group, send email to algogeeks@googlegroups.com. To unsubscribe from this group, send email to algogeeks+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/algogeeks?hl=en.