I want to use the binary search algorithm to search the string which has been entered by the user in a very big sorted file. I can not compare the string which has been entered by the user with the string which has been located in the middle line of the file to continue my b开发者_JAVA技巧inary search.
For example, if the user's string is abcda and the file's string is abcza, it is obvious that the user's string is smaller than the file's string. How is it implemented in java? it will be great if you can help me with a sample code.
You can use
str1.compareTo(str2);
If str1 is lexicographically less than str2, a negative number will be returned, 0 if equal or a positive number if str1 is greater.
E.g.,
"a".compareTo("b"); // returns a negative number, here -1
"a".compareTo("a"); // returns 0
"b".compareTo("a"); // returns a positive number, here 1
"b".compareTo(null); // throws java.lang.NullPointerException
If you would like to ignore case you could use the following:
String s = "yip";
String best = "yodel";
int compare = s.compareToIgnoreCase(best);
if(compare < 0){
//-1, --> s is less than best. ( s comes alphabetically first)
}
else if(compare > 0 ){
// best comes alphabetically first.
}
else{
// strings are equal.
}
Haven't you heard about the Comparable interface being implemented by String ? If no, try to use
"abcda".compareTo("abcza")
And it will output a good root for a solution to your problem.
String bigString = null;
for(int i = 0; i < number; i++){
System.out.println("... ");
String sentence = sc.nextLine();
if(bigString == null || sentence.compareTo(bigString) > 0) {
bigString = sentence;
}
}
System.out.println("...: " + bigString);
加载中,请稍侯......
精彩评论