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 desigualesEntrada: s1 = «geeksforgeeks», s2 = «geeksforgeeks»
Salida: strings iguales
Enfoque: Hay tres casos posibles que ocurren cuando comparamos dos strings:
- Ambas strings son la misma diferencia de medias del valor ASCII entre ambas strings es 0 .
- 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) .
- 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; }
Unequal Strings
Complejidad temporal: O(N)
Espacio auxiliar: O(1)