Open In App

Reverse String according to the number of words

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 

Implementation:




// 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 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 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 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 contributed by
# sanjeev2552




// 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




<script>
// Javascript program to reverse string
// according to the number of words
 
// Reverse the letters of the word
function reverse(str,start,end)
{
    // Temporary variable to store character
        let 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
function reverseletter(str,start,end)
{
    let 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
let str= "Ashish Yadav Abhishek Rajput Sunil Pundir".split("");
reverseletter(str, 0, str.length - 1);
document.write((str).join(""));
 
// This code is contributed by rag2127
</script>

Output
ridnuP tupjaR vadaY Ashish Abhishek Sunil

Complexity Analysis:


Article Tags :