Preguntas de práctica de JAVA, escriba un programa para generar todas las cadenas de palíndromos en una cadena, respóndalas ~
Ideas básicas: 1. Recursividad. Pellizca el principio y el final de la cuerda y luego pasa al siguiente nivel de juicio. Habrá duplicación y la complejidad computacional aumentará exponencialmente. 2. Bucle sencillo. Obtenga juicios uno por uno de las cadenas de 2-gt [longitud de la cadena].
Aquí se utiliza el segundo método~~
#include lt; iostreamgt;
#include cstdiogt; lt;cstringgt;
void outputString(char*, int);
char* partString(char*, int, int);
char* revString( char*, int);
bool isReversible(char*, int);
bool strEqual(char*, char*, int);
int main () {
usando el espacio de nombres std;
char* str;
cout lt;lt; "Confirma la longitud de la cadena: ";
int len = 0;
cin gt; gt;
if(len lt; = 0) devuelve 0; cout lt; endl lt; "La cadena por favor =O= :: ";
str = new char[len 1]; /p>
cin.getline(str, len);
cout lt; endl lt; "La cadena: " lt; cout lt; endl lt; "Ahora generando..." lt; endl lt; lt; endl lt; lt; "Listo, presione cualquier tecla para salir..." lt; endl; >
void cadena de salida(char* str, int len) {
for(int i = 2; i lt; len - 1; i) {
for(int j = 0; j lt; len - i; j ) {
char* str2 = partString(str, j, i);
if(isReversible(str2, i))
std::cout lt; str2 lt; std:: endl
eliminar[]
}
}
}
char* partString(char* str, int index, int len) {
char* str
2 = nuevo char[len 1];
for(int i = index; i lt; index len; i)
str2[i - index] = str[i];
str2[len] = '\0';
return str2
}
bool isReversible(char* str, int len) { //Confirma si una cadena es una cadena palíndromo.
char *str1, *str2;
if(len 2 == 0) {
str1 = partString(str, 0, len/2);
str2 = revString(partString(str, len/2, len/2), len/2
} else {
str1 = partString( str, 0, len/2);
str2 = revString(partString(str, len/2 1, len/2), len/2);
}
bool b = strEqual(str1, str2, len/2);
eliminar[] str1, str2
return b;
char* revString(char* str, int len) { //Devuelve una cadena invertida.
char* str2 = new char[len 1];
for(int i = 0; i lt; len; i) {
str2[len - i - 1] = cadena[i];
}
cadena2[len] = '\0';
}
bool strEqual(char* str1, char* str2, int len) { //Confirma si las dos cadenas son iguales.
for(int i = 0; i lt; len; i)
if(str1[i] != str2[i]) devuelve falso;
return true;
}
Significa que no debería ser difícil reescribirlo en Java. Lo escribimos con mucho cuidado, lo probamos y compilamos para que podamos adoptarlo ~. QwQ