Reverse String according to the number of words
Last Updated :
18 Aug, 2022
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++
#include <bits/stdc++.h>
using namespace std;
void reverse( char str[], int start, int end)
{
char temp;
while (start <= end)
{
temp = str[start];
str[start] = str[end];
str[end] = temp;
start++;
end--;
}
}
void reverseletter( char str[], int start, int end)
{
int wstart, wend;
for (wstart = wend = start; wend < end; wend++)
{
if (str[wend] == ' ' )
continue ;
while (str[wend] != ' ' && wend <= end)
wend++;
wend--;
reverse(str, wstart, wend);
}
}
int main()
{
char str[1000] = "Ashish Yadav Abhishek Rajput Sunil Pundir" ;
reverseletter(str, 0, strlen (str) - 1);
cout << str;
return 0;
}
|
C
#include<stdio.h>
#include<string.h>
void reverse( char str[], int start, int end) {
char temp;
while (start <= end)
{
temp = str[start];
str[start] = str[end];
str[end] = temp;
start++;
end--;
}
}
void reverseletter( char str[], int start, int end) {
int wstart, wend;
for (wstart = wend = start; wend < end; wend++) {
if (str[wend] == ' ' )
continue ;
while (str[wend] != ' ' && wend <= end)
wend++;
wend--;
reverse(str, wstart, wend);
}
}
int main()
{
char str[1000] = "Ashish Yadav Abhishek Rajput Sunil Pundir" ;
reverseletter(str, 0, strlen (str)-1);
printf ( "%s" , str);
return 0;
}
|
Java
class GFG
{
static void reverse( char str[],
int start, int end)
{
char temp;
while (start <= end)
{
temp = str[start];
str[start] = str[end];
str[end] = temp;
start++;
end--;
}
}
static void reverseletter( char str[],
int start, int end)
{
int wstart, wend;
for (wstart = wend = start; wend < end; wend++)
{
if (str[wend] == ' ' )
{
continue ;
}
while (wend <= end && str[wend] != ' ' )
{
wend++;
}
wend--;
reverse(str, wstart, wend);
}
}
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));
}
}
|
Python3
def reverse(string, start, end):
temp = ''
while start < = end:
temp = string[start]
string[start] = string[end]
string[end] = temp
start + = 1
end - = 1
def reverseletter(string, start, end):
wstart, wend = start, start
while wend < end:
if string[wend] = = " " :
wend + = 1
continue
while wend < = end and string[wend] ! = " " :
wend + = 1
wend - = 1
reverse(string, wstart, wend)
wend + = 1
if __name__ = = "__main__" :
string = "Ashish Yadav Abhishek Rajput Sunil Pundir"
string = list (string)
reverseletter(string, 0 , len (string) - 1 )
print (''.join(string))
|
C#
using System;
class GFG
{
static void reverse( char []str,
int start, int end)
{
char temp;
while (start <= end)
{
temp = str[start];
str[start] = str[end];
str[end] = temp;
start++;
end--;
}
}
static void reverseletter( char []str,
int start, int end)
{
int wstart, wend;
for (wstart = wend = start; wend < end; wend++)
{
if (str[wend] == ' ' )
{
continue ;
}
while (wend <= end && str[wend] != ' ' )
{
wend++;
}
wend--;
reverse(str, wstart, wend);
}
}
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));
}
}
|
Javascript
<script>
function reverse(str,start,end)
{
let temp;
while (start <= end)
{
temp = str[start];
str[start] = str[end];
str[end] = temp;
start++;
end--;
}
}
function reverseletter(str,start,end)
{
let wstart, wend;
for (wstart = wend = start; wend < end; wend++)
{
if (str[wend] == ' ' )
{
continue ;
}
while (wend <= end && str[wend] != ' ' )
{
wend++;
}
wend--;
reverse(str, wstart, wend);
}
}
let str= "Ashish Yadav Abhishek Rajput Sunil Pundir" .split( "" );
reverseletter(str, 0, str.length - 1);
document.write((str).join( "" ));
</script>
|
Output
ridnuP tupjaR vadaY Ashish Abhishek Sunil
Complexity Analysis:
- Time complexity : O(n)
- Auxiliary Space : O(1)
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...