@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 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.