就知道個簡單的二分算法,這次看題解發現了新的大陸。
原來二分還能這麼玩啊。
class Solution {
public int findString(String[] words, String s) {
int left=0;
int right=words.length-1;
int temp=0;
while(left<=right){
while(left<=right&&words[left].equals("")) left++;
while(left<=right&&words[right].equals("")) right--;
//從兩頭向中間逼近。
int mid=left+(right-left)/2;
temp=mid;//記錄mid的值,以方便後面使用
while(words[mid].equals("")&&mid<right) mid=mid+1;
//這裏採用向後的遍歷方式,找到不爲空的字符串
if(words[mid].equals("")){//到達了右邊界,且爲空,則直接調整右邊界
right=mid-1;
continue;
}
if(words[mid].equals(s)) return mid;
else if(words[mid].compareTo(s)<0) left=mid+1;
else right=mid-1;
}
return -1;
}
}