Related Articles

# Reverse String according to the number of words

• Difficulty Level : Easy
• Last Updated : 16 Sep, 2021

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:

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.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

```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 ``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 = ``"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``#include` `// 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 = ``"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 contributed 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`

## Javascript

 ``
Output:
`ridnuP tupjaR vadaY Ashish Abhishek Sunil`

My Personal Notes arrow_drop_up