有个排序后的字符串,其中散布着一些空字符串,编写一个方法,找出给定字符串(肯定不是空字符串)的索引。
import java.util.*;
public class Main{
public static void main(String[] args) {
String[] arr = {"a","","ac","","ad","b","","ba"};
int res = indexOf(arr,"ad");
System.out.println(res);
}
private static int indexOf(String[] arr,String target) {
int begin = 0;
int end = arr.length-1;
while(begin < end) {
int indexOfMid = begin + ((end-begin)>>1);
while(arr[indexOfMid].equals("")){
indexOfMid++;
if(indexOfMid > end) {
return -1;
}
}
if(arr[indexOfMid].compareTo(target)>0) {
end = indexOfMid - 1;
}else if(arr[indexOfMid].compareTo(target)>0){
begin = indexOfMid + 1;
}else {
return indexOfMid;
}
}
return -1;
}
}