String inversa según el número de palabras

Dada una string que contiene un número de palabras. Si el recuento de palabras en la string es par, invierta las palabras de su posición par; de lo contrario, invierta su posición impar, empuje las palabras invertidas al comienzo de una nueva string y agregue las palabras restantes tal como están en orden.

Ejemplos: 

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 

Enfoque: si el número de palabras es par, las palabras de la posición par van primero y también invierten esa palabra en particular, y si el número de palabras es impar, las palabras de la posición impar van primero y también invierten esa palabra en particular, luego las palabras restantes se agregan en orden. . Por ejemplo 

Ashish Yadav Abhishek Rajput Sunil Pundir. 
En la string anterior, el número de palabras es par, luego «Yadav Rajput Pundir» viene en la posición par y luego el resultado final será: 
ridnuP tupjaR vaDY 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 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

<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>
Producción: 

ridnuP tupjaR vadaY Ashish Abhishek Sunil

 

Complejidad temporal : O(n) 
Espacio auxiliar : O(1)

Publicación traducida automáticamente

Artículo escrito por ashu_tech y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *