Dada una string. La tarea es verificar si la string es un palíndromo o no usa punteros. No se le permite utilizar ninguna función de string integrada. Se dice que una cuerda es un palíndromo si el reverso de la cuerda es igual a la cuerda original. Por ejemplo, “señora” es palíndromo porque cuando se invierte la cuerda se logra la misma cuerda, pero “Señora” no es un palíndromo.
Input: str = "Madam" Output: String is not a Palindrome. Input: str = "madam" Output: String is Palindrome. Input: str = "radar" Output: String is Palindrome.
Algoritmo :
- Tome dos punteros, digamos, ptr y rev .
- Inicialice ptr a la dirección base de la string y muévalo hacia adelante para que apunte al último carácter de la string.
- Ahora, inicialice rev a la dirección base de la string y comience a mover rev hacia adelante y ptr hacia atrás simultáneamente hasta llegar a la mitad de la string.
- Si en algún momento el carácter apuntado por ptr y rev no coincide, salga del bucle.
- Compruebe si ptr y rev se cruzaron entre sí, es decir, rev > ptr . Si es así, entonces la cuerda es palíndromo, de lo contrario no lo es.
A continuación se muestra la implementación del enfoque anterior:
C
// C program to check if a string is palindrome // using pointers #include <stdio.h> // Function to check if the string is palindrome // using pointers void isPalindrome(char* string) { char *ptr, *rev; ptr = string; while (*ptr != '\0') { ++ptr; } --ptr; for (rev = string; ptr >= rev;) { if (*ptr == *rev) { --ptr; rev++; } else break; } if (rev > ptr) printf("String is Palindrome"); else printf("String is not a Palindrome"); } // Driver code int main() { char str[1000] = "madam"; isPalindrome(str); return 0; }
String is Palindrome
Complejidad de tiempo: O(N), donde N representa la longitud de la string dada.
Espacio auxiliar: O(1), no se requiere espacio adicional, por lo que es una constante.
Publicación traducida automáticamente
Artículo escrito por Ashwarya priyam y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA