Dada una string S que consta de N caracteres del alfabeto inglés, la tarea es verificar si la string dada es un palíndromo . Si la string dada es un palíndromo, imprima » Sí «. De lo contrario, escriba “ No ”.
Nota: Se dice que una cuerda es palíndromo si el reverso de la cuerda es el mismo que la cuerda.
Ejemplos:
Entrada: S = “ABCDCBA”
Salida: Sí
Explicación:
El reverso de la string dada es igual a (ABCDCBA) que es igual a la string dada. Por lo tanto, la string dada es palíndromo.Entrada: S = «GeeksforGeeks»
Salida: No
Explicación:
El reverso de la string dada es igual a (skeeGrofskeeG) que no es igual a la string dada. Por lo tanto, la string dada no es un palíndromo.
Enfoque ingenuo: el enfoque más simple para usar la función inversa incorporada en el STL . Siga los pasos a continuación para resolver el problema:
- Copie la string S en otra string, digamos P, y luego invierta la string S.
- Ahora verifique si la string S es igual a la string P y luego imprima » Sí «. De lo contrario, escriba “ No ”.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program for the above approach #include <bits/stdc++.h> using namespace std; // Function to check whether // the string is palindrome string isPalindrome(string S) { // Stores the reverse of the // string S string P = S; // Reverse the string P reverse(P.begin(), P.end()); // If S is equal to P if (S == P) { // Return "Yes" return "Yes"; } // Otherwise else { // return "No" return "No"; } } // Driver Code int main() { string S = "ABCDCBA"; cout << isPalindrome(S); return 0; }
Yes
Complejidad temporal: O(N)
Espacio auxiliar: O(N)
Enfoque eficiente: el enfoque anterior se puede optimizar en la complejidad del espacio recorriendo la string y verificando si el carácter en el i -ésimo índice es igual al carácter en el (Ni-1) -ésimo índice para cada índice en el rango [0, N/ 2] . Siga los pasos a continuación para resolver el problema:
- Iterar sobre el rango [0, N/2] , usando la variable i y en cada iteración verificar si el carácter en el índice i y Ni-1 no son iguales, luego imprimir » No » y romper .
- Si ninguno de los casos anteriores satisface, imprima » Sí «.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program for the above approach #include <bits/stdc++.h> using namespace std; // Function to check whether string // is palindrome string isPalindrome(string S) { // Iterate over the range [0, N/2] for (int i = 0; i < S.length() / 2; i++) { // If S[i] is not equal to // the S[N-i-1] if (S[i] != S[S.length() - i - 1]) { // Return No return "No"; } } // Return "Yes" return "Yes"; } // Driver Code int main() { string S = "ABCDCBA"; cout << isPalindrome(S); return 0; }
Yes
Complejidad temporal: O(N)
Espacio auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por siddharth_25 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA