Compara dos strings lexicográficamente en Java

En este artículo, discutiremos cómo podemos comparar dos strings lexicográficamente en Java. Una solución es utilizar el método Java compareTo(). El método compareTo() se usa para comparar dos strings lexicográficamente en Java. Cada carácter de ambas strings se convierte en un valor Unicode para comparar.

int compareTo(String str) :

Devuelve los siguientes valores:

  1. si (string1 > string2) devuelve un valor positivo.
  2. si ambas strings son iguales lexicográficamente, es decir (string1 == string2), devuelve 0.
  3. si (string1 < string2) devuelve un valor negativo.

Java

// Java program to show how to compare Strings
// using library function
public class Test
{
    public static void main(String[] args)
    {
        String s1 = "Ram";
        String s2 = "Ram";
        String s3 = "Shyam";
        String s4 = "ABC";
 
        System.out.println(" Comparing strings with compareTo:");
        System.out.println(s1.compareTo(s2));
        System.out.println(s1.compareTo(s3));
        System.out.println(s1.compareTo(s4));
    }
}
Producción

 Comparing strings with compareTo:
0
-1
17

Tiempo Complejidad: O(1)
Espacio Auxiliar: O(1)

Consulte ¿Cómo inicializar y comparar strings en Java? para más detalles. ¿Cómo comparar dos strings sin usar la función de biblioteca?

1. Input two strings string 1 and string 2.
2. for (int i = 0; i < str1.length() && 
        i < str2.length(); i ++) 
  (Loop through each character of both 
   strings comparing them until one 
   of the string terminates):
   a. If unicode value of both the characters 
      is same then continue;
   b. If unicode value of character of 
      string 1 and unicode value of string 2
      is different then return (str1[i]-str2[i])
3. if length of string 1 is less than string2
       return str2[str1.length()]
   else 
       return str1[str2.length()]

A continuación se muestra la implementación del algoritmo anterior. 

Java

// Java program to Compare two strings
// lexicographically
class Compare {
 
    // This method compares two strings
    // lexicographically without using
    // library functions
    public static int stringCompare(String str1,
                                    String str2)
    {
        for (int i = 0; i < str1.length() &&
                    i < str2.length(); i++) {
            if ((int)str1.charAt(i) ==
                (int)str2.charAt(i)) {
                continue;
            }
            else {
                return (int)str1.charAt(i) -
                    (int)str2.charAt(i);
            }
        }
 
        // Edge case for strings like
        // String 1="Geeky" and String 2="Geekyguy"
        if (str1.length() < str2.length()) {
            return (str1.length()-str2.length());
        }
        else if (str1.length() > str2.length()) {
            return (str1.length()-str2.length());
        }
         
        // If none of the above conditions is true,
        // it implies both the strings are equal
        else {
            return 0;
        }
    }
 
    // Driver function to test the above program
    public static void main(String args[])
    {
        String string1 = new String("Geeks");
        String string2 = new String("Practice");
        String string3 = new String("Geeks");
        String string4 = new String("Geeksforgeeks");
     
        System.out.println(stringCompare(string1,
                                        string2));
        System.out.println(stringCompare(string1,
                                        string3));
        System.out.println(stringCompare(string2,
                                        string1));
 
        // To show for edge case
        // In these cases, the output is the difference of
        // length of the string
        System.out.println(stringCompare(string1,
                                        string4));
        System.out.println(stringCompare(string4,
                                        string1));
    }
}
Producción

-9
0
9
-8
8

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

Este artículo es una contribución de Ankit Jain . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. 

Publicación traducida automáticamente

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