Programa C para comparar dos strings sin usar la función strcmp()

Dadas dos strings s1 y s2 , la tarea es escribir un programa C que compare las dos strings sin usar la función strcmp() . Si las strings son iguales, imprima «Strings iguales» , de lo contrario, imprima «Strings desiguales» .

Ejemplos:

Entrada: s1 = «geeksforgeeks», s2 = «geeks»
Salida: strings desiguales

Entrada: s1 = «geeksforgeeks», s2 = «geeksforgeeks»
Salida: strings iguales

 

Enfoque: Hay tres casos posibles que ocurren cuando comparamos dos strings:

  1. Ambas strings son la misma diferencia de medias del valor ASCII entre ambas strings es 0 .
  2. Ambas strings son diferentes significa que el valor ASCII del primer carácter que no coincide en la primera string es menor que la segunda string, entonces la diferencia entre ambas strings es (<0) .
  3. Ambas strings son diferentes significa que el valor ASCII del primer carácter que no coincide en la primera string es mayor que la segunda string, entonces la diferencia entre ambas strings es (> 0) .

Con base en las tres condiciones anteriores, la idea es comparar cada carácter de las strings dadas una por una cada vez que ocurra la condición 2 o 3 y luego imprimir «Strings desiguales»; de lo contrario, imprimir «Strings iguales» .

A continuación se muestra la implementación del enfoque anterior:

C

// C program to compare the two strings
// without using strcmp() function
#include <stdio.h>
 
// Function that compares the two string
void compareStrings(char* x, char* y)
{
    int flag = 0;
 
    // Iterate a loop till the end
    // of both the strings
    while (*x != '\0' || *y != '\0') {
        if (*x == *y) {
            x++;
            y++;
        }
 
        // If two characters are not same
        // print the difference and exit
        else if ((*x == '\0' && *y != '\0')
                 || (*x != '\0' && *y == '\0')
                 || *x != *y) {
            flag = 1;
            printf("Unequal Strings\n");
            break;
        }
    }
 
    // If two strings are exactly same
    if (flag == 0) {
        printf("Equal Strings\n");
    }
}
 
// Driver Code
int main(void)
{
    // Given strings s1 and s2
    char s1[20] = "python";
    char s2[20] = "dsa";
 
    // Function Call
    compareStrings(s1, s2);
    return 0;
}
Producción

Unequal Strings

Complejidad temporal: O(N)
Espacio auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por pushkar_s 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 *