Comprobar si una string es palíndromo en C usando punteros

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 :

  1. Tome dos punteros, digamos, ptr y rev .
  2. 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.
  3. 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.
  4. Si en algún momento el carácter apuntado por ptr y rev no coincide, salga del bucle.
  5. 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;
}
Producción:

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *