Table of Contents
Given a string, write a function that will print the words of a string in reverse order
Example
INPUT
s = “tutorial cup makes programming easy”
OUTPUT
“easy programming makes cup tutorial”
Time Complexity : O(n)
Algorithm
Traverse the string
1. Reverse the individual words
2. After reversing the words, reverse the whole sentence from start to end
C++ Program
#include <bits/stdc++.h>
using namespace std;
//prototype
void reverse(char *start, char *end);
/*Function to reverse words*/
void reverseWords(char *s)
{
char *word_begin = NULL;
char *temp = s; /* temp is for word boundry */
//Reversing each word
//Traversing the string
for(int i=0;i<strlen(s);i++ )
{
//string should have a proper start ie,word_begin, which is not space ie,temp[i] != ' '
if (( word_begin == NULL ) && (temp[i] != ' ') )
{
word_begin=(temp+i);
}
//Each word, reverse the word
//In below if condition words are considerd by seeing space
if(word_begin && (temp[i+1] == ' ') || (temp[i+1] == '\0'))
{
reverse(word_begin, (temp+i));
word_begin = NULL;
}
}
//Reversing the entire string
reverse(s, (temp+strlen(s)-1));
}
//this function will reverse the string, when given starting and ending pointers to the string
void reverse(char *start, char *end)
{
char temp;
while (start < end)
{
temp = *start;
*start++ = *end;
*end-- = temp;
}
}
/* Driver function to test above functions */
int main()
{
char s[] = " tutorial cup makes programming easy";
reverseWords(s);
cout<<s;
return 0;
}