C matriz inversa
En este tutorial, aprenderemos a invertir una cadena dada. Si la cadena es «hola» entonces, la salida debería ser «olleh». Podemos utilizar este concepto para comprobar el palíndromo. Porque la cadena palíndroma tendrá el mismo valor incluso después de invertirla.
En este ejemplo, primero tomamos una entrada del usuario, después de tomar una entrada tenemos que calcular la longitud de la cadena. Para calcular la longitud ejecutamos un bucle desde el inicio del array de caracteres hasta que se encuentra un carácter nulo (‘\0’) y en cada iteración, incrementamos la variable count. Asignamos uno menos a la j porque el array empieza de cero. Después de esto, simplemente copiamos los caracteres del final uno a uno del array de caracteres original a un nuevo array de caracteres.
Cadena inversa de Java
Salida: edocMétodo 1: Usando reverse()El método reverse() disponible en el archivo de cabecera del algoritmo puede invertir una cadena en su lugar sin escribir ningún código de caldera.Todo lo que tenemos que hacer es pasar el iterador de inicio y final como argumentos al método particular.Aquí hay un ejemplo en C++, demostrando lo mismo:#include <iostream>
}Output:!dlrow olleHMétodo 2: Usando el bucleTambién podemos invertir una cadena usando el bucle ‘for’ o ‘while’ sin ninguna función incorporada.La idea es iterar a través de los caracteres de la cadena de entrada en orden inverso y concatenarlos en una nueva cadena.Para hacer esto, tenemos que seguir los siguientes pasos:Aquí está la implementación de los pasos en C++:#include <iostream>
}Salida:edocMétodo 3: Usar la recusiónTambién podemos invertir una cadena usando la recursión en C++. La idea es extraer los caracteres en cada llamada recursiva y reasignarlos a la cadena en orden inverso durante el proceso de rastreo.Aquí está la implementación de la idea en C++:#include <iostream>
Palaute
} Ejemplo 2 – Invertir una cadena en el lugar Invertir una cadena en el lugar significa intercambiar los caracteres al principio y al final de la cadena y luego moverse hacia el centro de la cadena. No necesita un buffer separado para mantener la cadena invertida. En el siguiente ejemplo, leeremos una cadena del usuario e invertiremos esta cadena en su lugar. Programa C #include<stdio.h>
} Ejemplo 3 – Invertir una cadena usando recursión La función recursiva toma una cadena como entrada y la invierte hasta que encuentra ‘\0’ llamando a la función inversa. Aunque la función recursiva parece más fácil, no dará un mejor rendimiento que la función strrev() porque para cada llamada recursiva se creará una pila. En el siguiente ejemplo, usaremos esta técnica de recursión para invertir una cadena leída desde la consola. Programa C #include<stdio.h>
La cadena invertida es: zyxwvutsrqponmlkjihgfedcba Ejemplo 4 – Invertir cadena usando punteros Otra forma de acceder a un bloque contiguo de memoria, en lugar de con un array, es con un puntero. Como estamos hablando de cadenas, que están formadas por caracteres, utilizaremos punteros a caracteres, es decir, char *s. Sin embargo, los punteros sólo contienen una dirección, no pueden contener todos los caracteres de una matriz de caracteres. Esto significa que cuando usamos un char * para guardar una cadena, la matriz de caracteres que contiene la cadena ya debe existir. A continuación se presenta un programa en C para invertir una cadena utilizando punteros. En el siguiente ejemplo, invertiremos la cadena dada utilizando punteros de cadena. Programa en C #include<stdio.h>
Cadena inversa C++
Para algunas versiones de C, ya existe una función incorporada llamada strrev() para este propósito, disponible bajo la biblioteca de cabecera <string.h>. La cadena de entrada necesita ser pasada como argumento a la misma; que entonces la invierte.
El siguiente programa ilustra el uso de la función strrev() para invertir una cadena dada. Observe el uso de %[^\n] dentro de la función scanf() para leer la cadena. La diferencia es que, con %s, la lectura se realiza con el encuentro del primer espacio/carácter en blanco, mientras que %[^\n] acepta los espacios.
Podemos lograr lo mismo sin usar la función strrev(). En el siguiente programa, se declaran dos variables de tipo char – str[] & revstr[] – para mantener la cadena de entrada y la cadena invertida respectivamente. La variable end cuenta el número de caracteres de la cadena dada, pero se decrementa con cada asignación de caracteres dentro del segundo bucle while.