Reverse words in a string in C++ without using any built-in function in CPP

In this CPP tutorial, we are going to discuss how to reverse words in a given string without using any built-in function. This question is also being asked in many interviews like Lenskart interview for SDE-II post.

How to input sentence in CPP?

In cpp declaring a string and taking input using cin will ignore the words after the whitespace character.

Like :- Codespeedy is a programming site

Declaring string as string s and input using cin>>s will just store only Codespeedy in string s.

So, to input sentence in CPP one way is to use cin.getline() function.

    syntax:- cin.getline(name_of_string , characters_limit);

                                       Declaration:- char s[100];



                                                                  cin.getline(s,100);

How to check for whitespace in a sentence?

To check for whitespace in a sentence in CPP one way is to use isspace() function.

 Syntax:- isspace()

Frequency of each character in a string in c++

Reverse words in a string in C++

Let’s look at the algorithm first to learn how to reverse the words in a string in cpp.

Algorithm

  • Input a sentence using cin.getline() function.
  • Declare a string array str.
  • Now, store each word in a string array by checking that if the character in sentence reach whitespace or not using  isspace() function.
  • Now, print each word using the index of string array from last to 0 giving whitespace after each word.

CPP code to reverse words in a given string without using any built-in function

#include<bits/stdc++.h>

 using namespace std;

    int main()
 {
       char s[100];
      cin.getline(s,100);
      
      string str[100];
      
      long i,count=-1,c=0;
      
        for (i=0;s[i]!='\0';i++)
      {
          c++;
      }
      
        for (i=0;s[i]!='\0';i++)
      {
          count++;
                
                if(!isspace(s[i]) && i<c)
             {
                    while(!isspace(s[i]) && i<c)
    
                {
                     str[count]=str[count]+s[i];
                     
                      if(isspace(s[i]))
                         break;
              
                      i++;
                  }
             }
      }
      
         for (i=4;i>=0;i--)
  
      {
          cout<<str[i]<<" ";

      }
 }

INPUT

Codespeedy is a programming site

OUTPUT

site programming a is Codespeedy
Here, str[0]=Codespeedy
      str[1]=is
      str[2]=a
      str[3]=programming
      str[4]=site

 

So, to reverse words in given sentence print the string array from index 4 to 0 using for loop.

  cout<<str[4]<<" "<<str[3]<<" "<<str[2]<<" "<<str[1]<<" "<<str[0];

You may learn

Leave a Reply

Your email address will not be published. Required fields are marked *