Likou 125. Verifique la implementación del lenguaje palindrome-C: preguntas simples

tema

Portal

texto

Dada una cadena, verifique si es un palíndromo, considere solo letras y números e ignore el caso de las letras.
Explicación: En esta pregunta, definimos una cadena vacía como una cadena palíndromo válida.

Ejemplo 1:

Entrada: "Un hombre, un plan, un canal: Panamá"
Salida: verdadero

Ejemplo 2:

Entrada: "competir con un coche"
Salida: falso

Fuente: LeetCode

plantilla

bool isPalindrome(char * s){
    
    

}

Resolución de problemas

análisis

El palíndromo en el título solo se verifica paraNúmeros y letrasEl juicio palíndromo. Por lo tanto, es necesario eliminar los símbolos y otros elementos irrelevantes. Definir el índice del último elemento para comparar.

    int n = strlen(str) - 1;

Al mismo tiempo, para el cruce de elementos, que es el primer elemento de adelante hacia atrás, simplemente use el recorrido ordinario y la longitud del recorridoNo puede ser como un simple palíndromo de juicio n / 2, Debido a que no sabemos dónde está la parte efectiva de los elementos internos, necesitamosAtravesar hasta el último elemento. Al mismo tiempo, se comprueba el elemento y se omite el elemento si no está satisfecho.

 for (int i = 0; i <= n;) {
    
    
        if (!isalnum(str[i])) {
    
    
            i++;
            continue;
        }
        if (!isalnum(str[n])) {
    
    
            n--;
            continue;
        }
    }

Luego es la verificación de los elementos correspondientes antes y después, si no se cumple la condición del palíndromo se devuelve falso.

if (tolower(str[i]) != tolower(str[n])) 
            return false;

Código completo

bool isPalindrome(char *str)
{
    
    
    int n = strlen(str) - 1;
    for (int i = 0; i <= n;) {
    
    
        if (!isalnum(str[i])) {
    
    
            i++;
            continue;
        }
        if (!isalnum(str[n])) {
    
    
            n--;
            continue;
        }
        if (tolower(str[i]) != tolower(str[n])) 
            return false;  
        i++;
        n--;
    }
    return true;
}

resultado de la operación

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_44922487/article/details/113978652
Recomendado
Clasificación