Skip to content
Related Articles

Related Articles

Reverse String according to the number of words
  • Difficulty Level : Easy
  • Last Updated : 24 Jan, 2020

Given a string containing a number of words. If the count of words in string is even then reverse its even position’s words else reverse its odd position, push reversed words at the starting of a new string and append the remaining words as it is in order.

Examples:

Input:  Ashish Yadav Abhishek Rajput Sunil Pundir
Output: ridnuP tupjaR vadaY Ashish Abhishek Sunil

Input:  Ashish Yadav Abhishek Rajput Sunil Pundir Prem
Output: merP linuS kehsihbA hsihsA Yadav Rajput Pundir

Approach : If number of words are even then even position’s words come first and also reverse that particular word, and if number of words are odd then odd position’s words come first and also reverse that particular word, after then the remaining words are appended in order. For e.g.

Ashish Yadav Abhishek Rajput Sunil Pundir.
In the above string, the number of words is even then “Yadav Rajput Pundir” comes at the even position and then the final output will be:
ridnuP tupjaR vadaY Ashish Abhishek Sunil

C++




// C++ program to reverse string 
// according to the number of words 
#include <bits/stdc++.h> 
using namespace std;
  
// Reverse the letters of the word 
void reverse(char str[], int start, int end)
  
    // Temporary variable to store character 
    char temp; 
    while (start <= end) 
    
        // Swapping the first and last character 
        temp = str[start]; 
        str[start] = str[end]; 
        str[end] = temp; 
        start++; 
        end--; 
    
  
// This function forms the required string 
void reverseletter(char str[], int start, int end)
    int wstart, wend; 
    for (wstart = wend = start; wend < end; wend++) 
    
        if (str[wend] == ' '
            continue
              
        // Checking the number of words 
        // present in string to reverse 
        while (str[wend] != ' ' && wend <= end) 
            wend++; 
        wend--; 
          
        // Reverse the letter 
        // of the words 
        reverse(str, wstart, wend); 
    
  
// Driver Code 
int main() 
    char str[1000] = "Ashish Yadav Abhishek Rajput Sunil Pundir"
    reverseletter(str, 0, strlen(str) - 1); 
    cout << str; 
    return 0; 
  
// This code is contributed by SHUBHAMSINGH10


C




// C program to reverse string 
// according to the number of words 
#include<stdio.h>
#include<string.h>
  
// Reverse the letters of the word
void reverse(char str[], int start, int end) {
  
    // Temporary variable to store character
    char temp;
    while (start <= end)
    {
        // Swapping the first and last character
        temp = str[start];
        str[start] = str[end];
        str[end] = temp;
        start++;
        end--;
    }
}
  
// This function forms the required string
void reverseletter(char str[], int start, int end) {
              
    int wstart, wend;
    for (wstart = wend = start; wend < end; wend++) {
                      
        if (str[wend] == ' ')
            continue;
              
        // Checking the number of words
        // present in string to reverse
        while (str[wend] != ' ' && wend <= end)
            wend++;
        wend--;
          
        //Reverse the letter
        //of the words
        reverse(str, wstart, wend);
    }
}
  
// Driver Code
int main()
{
    char str[1000] = "Ashish Yadav Abhishek Rajput Sunil Pundir";
    reverseletter(str, 0, strlen(str)-1);
    printf("%s", str);
    return 0;
}


Java




// Java program to reverse string 
// according to the number of words 
class GFG
{
  
    // Reverse the letters of the word 
    static void reverse(char str[], 
                       int start, int end) 
    {
  
        // Temporary variable to store character 
        char temp;
        while (start <= end) 
        {
            // Swapping the first and last character 
            temp = str[start];
            str[start] = str[end];
            str[end] = temp;
            start++;
            end--;
        }
    }
  
    // This function forms the required string 
    static void reverseletter(char str[], 
                            int start, int end)
    {
  
        int wstart, wend;
        for (wstart = wend = start; wend < end; wend++) 
        {
  
            if (str[wend] == ' '
            {
                continue;
            }
  
            // Checking the number of words 
            // present in string to reverse 
            while (wend <= end && str[wend] != ' '
            {
                wend++;
            }
            wend--;
  
            // Reverse the letter 
            // of the words 
            reverse(str, wstart, wend);
        }
    }
  
    // Driver Code 
    public static void main(String[] args)
    {
        char str[] = "Ashish Yadav Abhishek Rajput Sunil Pundir".toCharArray();
        reverseletter(str, 0, str.length - 1);
        System.out.printf("%s", String.valueOf(str));
    }
}
  
// This code contributed by Rajput-Ji


Python3




# Python3 program to reverse string
# according to the number of words
  
# Reverse the letters of the word
def reverse(string, start, end):
  
    # Temporary variable to store character
    temp = ''
    while start <= end:
  
        # Swapping the first and last character
        temp = string[start]
        string[start] = string[end]
        string[end] = temp
        start += 1
        end -= 1
  
# This function forms the required string
def reverseletter(string, start, end):
    wstart, wend = start, start
  
    while wend < end:
        if string[wend] == " ":
            wend += 1
            continue
  
        # Checking the number of words
        # present in string to reverse
        while wend <= end and string[wend] != " ":
            wend += 1
        wend -= 1
  
        # Reverse the letter
        # of the words
        reverse(string, wstart, wend)
        wend += 1
  
# Driver Code
if __name__ == "__main__":
    string = "Ashish Yadav Abhishek Rajput Sunil Pundir"
    string = list(string)
    reverseletter(string, 0, len(string) - 1)
    print(''.join(string))
  
# This code is conributed by
# sanjeev2552


C#




// C# program to reverse string 
// according to the number of words 
using System;
      
class GFG
{
   
    // Reverse the letters of the word 
    static void reverse(char []str, 
                       int start, int end) 
    {
   
        // Temporary variable to store character 
        char temp;
        while (start <= end) 
        {
            // Swapping the first and last character 
            temp = str[start];
            str[start] = str[end];
            str[end] = temp;
            start++;
            end--;
        }
    }
   
    // This function forms the required string 
    static void reverseletter(char []str, 
                            int start, int end)
    {
   
        int wstart, wend;
        for (wstart = wend = start; wend < end; wend++) 
        {
   
            if (str[wend] == ' '
            {
                continue;
            }
   
            // Checking the number of words 
            // present in string to reverse 
            while (wend <= end && str[wend] != ' '
            {
                wend++;
            }
            wend--;
   
            // Reverse the letter 
            // of the words 
            reverse(str, wstart, wend);
        }
    }
   
    // Driver Code 
    public static void Main(String[] args)
    {
        char []str = "Ashish Yadav Abhishek Rajput Sunil Pundir".ToCharArray();
        reverseletter(str, 0, str.Length - 1);
        Console.Write("{0}", String.Join("",str));
    }
}
  
// This code has been contributed by 29AjayKumar


Output:

ridnuP tupjaR vadaY Ashish Abhishek Sunil

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up
Recommended Articles
Page :