在包含空字符的数组中查找某个值
程序员文章站
2022-05-18 17:16:08
...
有一个排序的数组,元素之间被空字符分隔开了,要在这个数组中找到某个字符
public int search(String[] source,String s){
//判断是否空字符串
if(source.length == 0){
return -1;
}
int left = 0;
int mid = 0;
int right = source.length - 1;
while(left + 1 < right){
//首先去掉右边的空字符
while(left + 1 < right && "".equals(source[right])){
right--;
}
if("".equals(source[right])){
right--;
}
//如果右边的位置小于左边位置,返回-1,没有找到
if(right < left){
return -1;
}
mid = left + (right - left) / 2;
//如果中间位置是空字符,则继续向右查找,找到第一个非空字符为止
while("".equals(source[mid])){
mid++;
}
if(source[mid] == s){
return mid;
}
if(source[mid].compareTo(s) < 0){
left = mid + 1;
} else {
right = mid - 1;
}
}
if(source[left] == s){
return left;
}
if(source[right] == s){
return right;
}
return -1;
}