logo

Diferentes métodos para invertir una cadena en C++

La inversión de una cadena no es más que simplemente sustituir el último elemento de una cadena en la primera posición de la cadena.

cuerda inversa



Diferentes métodos para invertir una cadena en C++ son:

  • Haciendo nuestra propia función inversa
  • Usando la función inversa 'incorporada'
  • Usando constructor
  • Usando un temperatura archivo

1. Crear una función inversa personalizada para intercambiar caracteres

  • Utilizando un enfoque del primero al último para' bucle

CPP








// C++ program to reverse a string> // using first to last approach> // 'for' loop> #include> using> namespace> std;> // Function to reverse a string> void> reverseStr(string& str)> {> >int> n = str.length();> >// Swap character starting from two> >// corners> >for> (>int> i = 0; i swap(str[i], str[n - i - 1]); } // Driver program int main() { string str = 'geeksforgeeks'; reverseStr(str); cout << str; return 0; }>

>

>

Producción

skeegrofskeeg>

Análisis de complejidad:

Complejidad del tiempo: EN)
Espacio Auxiliar: O(1)

  • Usando un enfoque del primero al último con bucle while

C++




// C++ program to reverse a string> // using while loop> #include> using> namespace> std;> // Function to reverse a string> void> reverseStr(string& str)> {> >int> len = str.length();> >int> n = len-1;> >int> i = 0;> >while>(i<=n){> >//Using the swap method to switch values at each index> >swap(str[i],str[n]);> >n = n-1;> >i = i+1;> >}> }> // Driver program> int> main()> {> >string str =>'geeksforgeeks'>;> >reverseStr(str);> >cout << str;> >return> 0;> }>

>

>

Producción

skeegrofskeeg>

Análisis de complejidad:

Complejidad del tiempo: EN)
Espacio Auxiliar: O(1)

  • Usando un enfoque del último al primero para ' Bucle

C++




¿Qué hace que una PC sea rápida?
// C++ program to demonstrate reverse> // of a string using Last to First> // Approach 'for' Loop> #include> using> namespace> std;> // Function to reverse a string> void> reverse(string str)> {> >for> (>int> i = str.length() - 1; i>= 0; i--)> >cout << str[i];> }> // Driver code> int> main(>void>)> {> >string s =>'techcodeview.com'>;> >reverse(s);> >return> (0);> }>

>

>

Producción

skeeGrofskeeG>

Análisis de complejidad:

Complejidad del tiempo: EN)
Espacio Auxiliar: O(1)

  • Uso de un bucle ' while ' de último a primer acercamiento

C++




// C++ program to demonstrate reverse> // of a string using Last to First> // Approach 'while' Loop> #include> using> namespace> std;> // Function to reverse a string> void> reverse(string str)> {> >int> len = str.length();> >int> n = len;> >while>(n--)> >cout << str[n];> }> // Driver code> int> main(>void>)> {> >string s =>'techcodeview.com'>;> >reverse(s);> >return> (0);> }>

>

>

Producción

skeeGrofskeeG>

Análisis de complejidad:

Complejidad del tiempo: EN)
Espacio Auxiliar: O(1)

1. Uso de la función recursiva con enfoque de dos punteros

Las funciones de recursividad se utilizan para iterar a diferentes índices de la cadena.

C++




// C++ program to reverse a string> // using recursion> #include> using> namespace> std;> // Function to reverse a string> void> reverseStr(string& str,>int> n,>int> i)> {> > >if>(n<=i){>return>;}> // Swapping the character> >swap(str[i],str[n]);> >reverseStr(str,n-1,i+1);> }> // Driver program> int> main()> {> >string str =>'geeksforgeeks'>;> >reverseStr(str, str.length()-1, 0);> >cout << str;> >return> 0;> }>

texto en negrita css
>

>

Producción

skeegrofskeeg>

Análisis de complejidad:

Complejidad del tiempo: EN)

Espacio Auxiliar : EN)

2. Usar el enfoque de un puntero en recursividad

A continuación se muestra la implementación del código:

C++




//C++ program to reverse a string using recursion> #include> using> namespace> std;> void> getreverse(string &str,>int> i)> {> >if> (i>(cadena.longitud() - 1 - i))> >{> >return>;> >}> >swap(str[i], str[str.length() - i - 1]);> >i++;> >getreverse(str, i);> }> int> main()> {> >string name =>'geeksforgeeks'>;> >getreverse(name, 0);> >cout << name << endl;> >return> 0;> }> //code contributed by pragatikohli>

>

>

Producción

skeegrofskeeg>

Análisis de complejidad:

Complejidad del tiempo: EN)

Espacio Auxiliar: EN)

3. Uso de la función inversa incorporada

Hay una función directa en el archivo de encabezado del algoritmo para realizar operaciones inversas que nos ahorra tiempo al programar.

// Reverses elements in [begin, end] void reverse (BidirectionalIterator begin,  BidirectionalIterator end);>

CPP




// C++ program to illustrate the> // reversing of a string using> // reverse() function> #include> using> namespace> std;> int> main()> {> >string str =>'geeksforgeeks'>;> >// Reverse str[begin..end]> >reverse(str.begin(), str.end());> >cout << str;> >return> 0;> }>

b más árbol
>

>

Producción

skeegrofskeeg>

Análisis de complejidad:

Complejidad del tiempo: EN)

Espacio Auxiliar: O(1)

4. Invertir una cadena usando el constructor

Pasar iteradores inversos al constructor nos devuelve una cadena invertida.

CPP




// C++ program to reverse> // string using constructor> #include> using> namespace> std;> int> main()> {> >string str =>'techcodeview.com'>;> >// Use of reverse iterators> >string rev = string(str.rbegin(), str.rend());> >cout << rev << endl;> >return> 0;> }>

>

>

Producción

skeeGrofskeeG>

Análisis de complejidad:

Complejidad del tiempo: EN)

Espacio Auxiliar: O(1)

5. Usando una cadena temporal

CPP




// C++ program to demonstrate> // reversing of string> // using temporary string> #include> using> namespace> std;> int> main()> {> >string str =>'techcodeview.com'>;> >int> n = str.length();> > >// Temporary string to store the reverse> >string rev;> > >for> (>int> i = n - 1; i>= 0; i--)> >rev.push_back(str[i]);> >cout << rev << endl;> >return> 0;> }>

>

>

Producción

skeeGrofskeeG>

Análisis de complejidad:

Complejidad del tiempo : EN)

Espacio Auxiliar: O(1)

¿Cómo podríamos obtener el reverso de una cadena constante?

Para obtener el reverso de una cadena constante, primero debemos declarar un ' cadena constante' en una función definida por el usuario después de la cual hemos declarado, utilice el siguiente algoritmo para llamar a los objetos deseados.

const reverseConstString = function(string) { return string.split('').reverse().join('')>

Ejemplo:

C++




// C++ program to get reverse of a const string> #include> using> namespace> std;> // Function to reverse string and return> // reverse string pointer of that> char>* reverseConstString(>char> const>* str)> {> >// find length of string> >int> n =>strlen>(str);> >// create a dynamic pointer char array> >char>* rev =>new> char>[n + 1];> >// copy of string to ptr array> >strcpy>(rev, str);> >// Swap character starting from two> >// corners> >for> (>int> i = 0, j = n - 1; i swap(rev[i], rev[j]); // return pointer of the reversed string return rev; } // Driver code int main(void) { const char* s = 'techcodeview.com'; printf('%s', reverseConstString(s)); return (0); }>

herencia en c++

>

>

Producción

skeeGrofskeeG>

Complejidad del tiempo: EN)
Espacio Auxiliar: EN)

Usando la estructura de datos de la pila

C++




// C++ Program to reverse a string> #include> using> namespace> std;> int> main()> {> >string s =>'techcodeview.com'>;> >stack<>char>>st;> >for> (>char> x : s)> >st.push(x);> >while> (!st.empty()) {> >cout << st.top();> >st.pop();> >}> >return> 0;> }>

>

>

Producción

skeeGrofskeeG>

Análisis de complejidad:

Complejidad del tiempo: EN)

Espacio Auxiliar: EN)

Usando estructura de datos vectoriales

C++




// C++ Program to reverse a string> #include> using> namespace> std;> int> main()> {> >string s =>'techcodeview.com'>;> >int> n=s.length();> >vector<>char>>cosa;> >for> (>int> i = n - 1; i>= 0; i--)> >vec.push_back(s[i]);> > >for>(>auto> i:vec){> >cout< } return 0; }>

>

>

Producción

skeeGrofskeeG>

Análisis de complejidad:

Complejidad del tiempo: EN)

Espacio Auxiliar: EN)

Este artículo es una contribución de Priyam Kakati, Ranju Kumari, Somesh Awasthi.