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.

Reply via email to