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.