Programa C para comparar dos strings lexicográficamente

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:

  1. Iterar sobre ambas strings usando un bucle for.
  2. Compare cada carácter de las dos strings hasta que encuentre un carácter que no coincida.
  3. 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.
  4. De lo contrario, s2 es la string lexicográficamente más pequeña.
  5. Si no se encuentra ningún carácter que no coincida, compare la longitud de ambas strings.
  6. 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)

Publicación traducida automáticamente

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