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>
ridnuP tupjaR vadaY Ashish Abhishek Sunil
Complejidad temporal : O(n)
Espacio auxiliar : O(1)