Program to reverse a sentence words stored as character array in C++

C++Server Side ProgrammingProgramming

Suppose we have one input string sentence where each element is stored as single character, we have to reverse the strings word by word.

So, if the input is like ["t","h","e"," ","m","a","n"," ","i","s"," ","n","l","c","e"], then the output will be ["n","l","c","e"," ","i","s"," ","m","a","n"," ","t","h","e"]

To solve this, we will follow these steps −

  • reverse the array s

  • j := 0

  • n := size of s

  • for initialize i := 0, when i < n, update (increase i by 1), do −

    • if s[i] is same as ' ', then −

      • reverse the array s from index j to i

      • j := i + 1

  • reverse the array s from index j to n

Let us see the following implementation to get better understanding −

Example

 Live Demo

#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<auto> v){
   cout << "[";
   for(int i = 0; i<v.size(); i++){
      cout << v[i] << ", ";
   }
   cout << "]"<<endl;
}
class Solution {
   public:
   void reverseWords(vector<char>& s) {
      reverse(s.begin(), s.end());
      int j = 0;
      int n = s.size();
      for(int i = 0; i < n; i++){
         if(s[i] == ' '){
            reverse(s.begin() + j, s.begin() + i);
            j = i + 1;
         }
      }
      reverse(s.begin() + j, s.begin() + n);
   }
};
main(){
   Solution ob;
   vector<char> v = {'t','h','e',' ','m','a','n',' ','i','s','
   ','n','i','c','e'};
   ob.reverseWords(v);
   print_vector(v);
}

Input

{'t','h','e',' ','m','a','n',' ','i','s',' ','n','i','c','e'}

Output

[n, i, c, e, , i, s, , m, a, n, , t, h, e, ]
raja
Published on 21-Oct-2020 10:38:01
Advertisements