Aquí, construiremos un programa en C para comparar lexicográficamente dos strings. Dadas 2 strings s1 y s2 , de alfabetos ingleses en minúsculas, denote la string lexicográficamente mayor. El orden lexicográfico es el orden en que aparecen las palabras en el orden de un diccionario.
Aporte:
s1 = "geeks", s2 = "geeksforgeeks
Producción:
String 2 is lexicographically greater than string 1.
Acercarse
Secuencia para seguir estos pasos:
- Iterar sobre ambas strings usando un bucle for.
- Compare cada carácter de las dos strings hasta que encuentre un carácter que no coincida.
- Para el carácter no emparejado en la posición i, si s1[i] < s2[i], s1 es lexicográficamente una string más pequeña.
- De lo contrario, s2 es la string lexicográficamente más pequeña.
- Si no se encuentra ningún carácter que no coincida, compare la longitud de ambas strings.
- La string más larga es lexicográficamente más pequeña.
Ejemplo:
C
// C program to demonstrate arranging // strings lexicographically #include <stdio.h> void compareStrings(char* s1, char* s2) { int i; // comparing each character for (i = 0; s1[i] != '\0' || s2[i] != '\0'; i++) { if (s1[i] > s2[i]) { printf("String 1 is lexicographically greater " "than string 2"); return; } else if (s2[i] > s1[i]) { printf("String 2 is lexicographically greater " "than string 1"); return; } } // comparing length of two strings if (s1[i] != '\0') { printf("String 1 is lexicographically greater than " "string 2"); } else if (s2[i] != '\0') { printf("String 2 is lexicographically greater than " "string 1"); } else { printf("Both strings are lexicographically equal"); } } int main() { // declaring two strings char s1[20] = "help"; char s2[20] = "held"; // function call compareStrings(s1, s2); return 0; }
Producción:
String 1 is lexicographically greater than string 2.
- Complejidad de tiempo: O(N)
- Complejidad del espacio: O(1)