@saurabh.... why are you reading the string character by character......why don't just read it word by word ? ..... what's the problem in it ?
btw...nice soln... On Wed, Jul 13, 2011 at 7:32 AM, Gene <gene.ress...@gmail.com> wrote: > You can recognize a word W, recur to print the rest of the words in > reverse, then print W: > > #include <stdio.h> > #include <string.h> > > void print_words_in_reverse(char *s) > { > char *e; > while (isspace(*s)) s++; > if (*s == '\0') return; > e = s + 1; > while (*e && !isspace(*e)) e++; > print_words_in_reverse(e); > printf("%.*s ", e - s, s); > } > > int main(void) > { > char line[16 * 1024]; > fgets(line, sizeof line, stdin); > print_words_in_reverse(line); > return 0; > } > > > On Jul 6, 12:40 pm, Tushar Bindal <tushicom...@gmail.com> wrote: > > good job > > but how can this be done in one traversal as asked on the Adobe Interview > > Questions thread< > https://groups.google.com/forum/#%21msg/algogeeks/oEL8z4wwMJY/FAVdr2M...> > > . > > > > > > > > > > > > On Wed, Jul 6, 2011 at 9:49 PM, Navneet Gupta <navneetn...@gmail.com> > wrote: > > > I think somebody on this thread has asked this question but i am not > > > able to find that. > > > > > Question was if a string is like "my name is ram", then output should > > > be "ram is name my". > > > > > Wrote the code for same, so sharing. > > > > > #include<iostream> > > > #include<string> > > > using namespace std; > > > > > void SwapStringChars(string &str, int pos1, int pos2) > > > { > > > char ch = str[pos1]; > > > str[pos1] = str[pos2]; > > > str[pos2] = ch; > > > } > > > > > void reverseString(string &str, int left, int right) > > > { > > > for(int i = left ; i <= left + (right-left)/2 ; i++) > > > SwapStringChars(str, i, right + left -i)); > > > } > > > > > void reverseWordsInString(string &str) > > > { > > > char space = ' '; > > > int len = str.length(); > > > int startIndex = 0, endIndex = 0; > > > while(endIndex < len - 1) > > > { > > > while(str[endIndex] != space && endIndex < > len)endIndex++; > > > reverseString(str, startIndex, endIndex-1); > > > startIndex = endIndex; > > > while(str[startIndex] == space)startIndex++; > > > endIndex = startIndex; > > > } > > > } > > > > > int main() > > > { > > > string str; > > > cout<<"\nEnter enter the string :"; > > > getline(cin,str); > > > > > //Reverse whole string at once > > > reverseString(str, 0, str.length() - 1); > > > > > //Reverse Individual words in string > > > reverseWordsInString(str); > > > cout<<str; > > > cin.get(); > > > return 0; > > > } > > > > > -- > > > Regards, > > > Navneet > > > > > -- > > > 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. > > > > -- > > Tushar Bindal > > Computer Engineering > > Delhi College of Engineering > > Mob: +919818442705 > > E-Mail : tushicom...@gmail.com > > Website:www.jugadengg.com- Hide quoted text - > > > > - Show quoted text - > > -- > 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.