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 <[email protected]> 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 <[email protected]> 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 [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.
>
> --
> Tushar Bindal
> Computer Engineering
> Delhi College of Engineering
> Mob: +919818442705
> E-Mail : [email protected]
> 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 [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.