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:
- si (string1 > string2) devuelve un valor positivo.
- si ambas strings son iguales lexicográficamente, es decir (string1 == string2), devuelve 0.
- 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)); } }
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)); } }
-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