美文网首页
有序字符串数组的查找

有序字符串数组的查找

作者: 掌灬纹 | 来源:发表于2019-01-28 20:03 被阅读0次

有个排序后的字符串数组,其中有一些空的字符串,

编写一个方法,找出给定字符串的索引。

形如:String[] arr = {"a","","ac","","ad","b","","ba"};

find "ac" 应输出 2

思路:

简单的二分法变体,当调整中间位置时考虑遇到空串的情况,

遇到空串,mid+1 或 mid-1

 注意使用String封装的 compareTo和equals方法。

(Java代码参考)

public static void main(String[] args) {

String[] arr = {"a","","ac","","ad","b","","ba"};

int res = indexOf(arr, "ac");

System.out.println(res);

}

static int indexOf(String[] arr,String target) {//target目标

int begin = 0;

int end = arr.length-1;

while(begin <= end) {

int midIndex = begin + ((end - begin)>>1);

while(arr[midIndex].equals("")) {//中值定在空串

midIndex++;//可能导致中值超过end

if(midIndex > end) {//没有找到

return -1;

}

}

if(target.compareTo(arr[midIndex]) > 0) {//目标在中值右侧

begin = midIndex + 1;

}else if(target.compareTo(arr[midIndex]) < 0) {

end = midIndex - 1;

}else {

return midIndex;

}

}

return -1;

}

相关文章

  • 2.11 题目详解:在有空字符串中的有序字符串数组中查找

    Chapter2: 时间复杂度分析、递归、查找与排序 11. 题目详解:在有空字符串中的有序字符串数组中查找 题目...

  • 有序字符串数组的查找

    有个排序后的字符串数组,其中有一些空的字符串, 编写一个方法,找出给定字符串的索引。 形如:String[] ar...

  • 2018 iOS面试题---算法相关

    字符串反转 链表反转 有序数组合并 Hash算法 查找两个子视图的共同父视图 求无序数组当中的中位数 一、字符串反...

  • 算法相关

    字符串反转 链表反转 有序数组合并 Hash算法 查找两个子视图的共同父视图 求无序数组当中的中位数 一、字符串反...

  • 算法相关

    字符串反转 链表反转 有序数组合并 Hash算法 查找两个子视图的共同父视图 求无序数组当中的中位数 一、字符串反...

  • 算法题

    行列都是有序的二维数组,查找k是否存在【查找法】 二维数组中的查找(行列分别有序数组的二分查找)【递归法】 快速排...

  • (八)二分/插值/斐波那契查找算法

    一 顺序查找 没什么好说的,就是依次查找。对数组是否有序没有要求 二 二分查找 前提:数组有序 2.1 思路 目标...

  • JS数组的二分查找算法

    用途:对有序数组进行查找。如:查找指定元素在数组中的下标

  • 算法

    字符串反转 链表反转 有序数组合并 Hash算法 查找两个子视图的共同父视图 求无序数组中的中位数

  • 二分查找及其扩展

    在有序数组中,二分查找是效率较高的查找算法。二分查找一般有递归和迭代 对有序数组查找指定数字在数组中出现的次数//...

网友评论

      本文标题:有序字符串数组的查找

      本文链接:https://www.haomeiwen.com/subject/qcdzjqtx.html