稀疏数组搜索。有个排好序的字符串数组,其中散布着一些空字符串,编写一种方法,找出给定字符串的位置。
示例1:
输入: words = [“at”, “”, “”, “”, “ball”, “”, “”, “car”, “”, “”,“dad”, “”, “”], s = “ta”
输出:-1
说明: 不存在返回-1。
代码
class Solution {public int findString(String[] words, String s) {int n=words.length;int l=0,r=n-1;while (l<=r){int mid=(r-l)/2+l;while (r>=0&&words[r].length()==0) r--;//缩小边界while (l<n&&words[l].length()==0) l++;if(l<=r){while (mid>=l&&words[mid].length()==0) mid--;//排除空串if(s.equals(words[mid]))//二分查找return mid;else if(s.compareTo(words[mid])>0)l=mid+1;else r=mid-1;}}return -1;}
}