Ejemplo: Deje que la string de entrada sea «me gusta mucho este programa». La función debería cambiar la string a «mucho, muy programe esto como yo»
Ejemplos :
Entrada : s = «código de práctica de prueba de geeks»
Salida : s = «código de práctica de prueba de geeks»Entrada : s = «ser bueno en la codificación necesita mucha práctica»
Salida : s = «mucha práctica necesita la codificación en la buena obtención»
Algoritmo :
- Inicialmente, invierta las palabras individuales de la string dada una por una, para el ejemplo anterior, después de invertir las palabras individuales, la string debe ser «i ekil siht margorp yrev hcum».
- Invierta toda la string de principio a fin para obtener el resultado deseado «mucho, programe esto como yo» en el ejemplo anterior.
A continuación se muestra la implementación del enfoque anterior:
C
// C program to reverse a string #include <stdio.h> // Function to reverse any sequence // starting with pointer begin and // ending with pointer end void reverse(char* begin, char* end) { char temp; while (begin < end) { temp = *begin; *begin++ = *end; *end-- = temp; } } // Function to reverse words void reverseWords(char* s) { char* word_begin = s; // Word boundary char* temp = s; // Reversing individual words as // explained in the first step while (*temp) { temp++; if (*temp == '') { reverse(word_begin, temp - 1); } else if (*temp == ' ') { reverse(word_begin, temp - 1); word_begin = temp + 1; } } // Reverse the entire string reverse(s, temp - 1); } // Driver Code int main() { char s[] = "i like this program very much"; char* temp = s; reverseWords(s); printf("%s", s); return 0; }
Producción:
much very program this like i
Complejidad de tiempo: O(n)
Espacio Auxiliar: O(n)
El código anterior no maneja los casos cuando la string comienza con un espacio. La siguiente versión maneja este caso específico y no hace llamadas innecesarias para invertir la función en el caso de múltiples espacios intermedios. Gracias a rka143 por proporcionar esta versión.
C
// C program to implement // the above approach void reverseWords(char* s) { char* word_begin = NULL; // temp is for word boundary char* temp = s; // STEP 1 of the above algorithm while (*temp) { /*This condition is to make sure that the string start with valid character (not space) only*/ if ((word_begin == NULL) && (*temp != ' ')) { word_begin = temp; } if (word_begin && ((*(temp + 1) == ' ') || (*(temp + 1) == ''))) { reverse(word_begin, temp); word_begin = NULL; } temp++; // End of while } // STEP 2 of the above algorithm reverse(s, temp - 1); }
Complejidad de tiempo: O(n)
Otro enfoque:
Consulte el artículo completo sobre Palabras inversas en una string determinada para obtener más detalles.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA