Sorting&Searching 二分法找有空字符串的数组 @CareerCup
来源:互联网 发布:js utf16 编辑:程序博客网 时间:2024/05/21 11:02
要点是找到最近的不是空字符串的位置,然后作为mid,再继续二分
package Sorting_Searching;/** * Given a sorted array of strings which is interspersed with empty strings, * write a method to find the location of a given string. * * Example: find “ball” in [“at”, “”, “”, “”, “ball”, “”, “”, “car”, “”,“”, * “dad”, “”, “”] will return 4 * * Example: find “ballcar” in [“at”, “”, “”, “”, “”, “ball”, “car”, “”, “”, * “dad”, “”, “”] will return -1 * * 译文: * * 给你一个排好序的并且穿插有空字符串的字符串数组,写一个函数找到给定字符串的位置。 * * 例子:在字符串数组 [“at”, “”, “”, “”, “ball”, “”, “”, “car”, “”,“”, “dad”, “”, “”] * 中找到"ball",返回下标4. * * 例子:在字符串数组 [“at”, “”, “”, “”, “”, “ball”, “car”, “”, “”, “dad”, “”, “”] * 中找到"ballcar",查找失败,返回-1. * */public class S11_5 {public static void main(String[] args) {String[] stringList = { "apple", "", "", "banana", "", "", "","carrot", "duck", "", "", "eel", "", "flower" };System.out.println(search(stringList, "apple"));}public static int search(String[] strings, String str) {if (strings == null || str == null || str.isEmpty()) {return -1;}return searchR(strings, str, 0, strings.length - 1);}public static int searchR(String[] strings, String str, int first, int last) {if(first > last){return -1;}int mid = (first+last)/2;// 找到离中心最近的不是空字符串的位置if(strings[mid].length() == 0 && mid<=last){int left = mid-1;int right = mid+1;while(true){if(left<first && right>last){return -1;}else if(right<=last && strings[right].length()!=0){mid = right;break;}else if(left>=first && strings[left].length()!=0){mid = left;break;}right++;left--;}}if(str.equals(strings[mid])){return mid;}else if(strings[mid].compareTo(str) > 0){return searchR(strings, str, first, mid-1);}else {return searchR(strings, str, mid+1, last);}}}
- Sorting&Searching 二分法找有空字符串的数组 @CareerCup
- Sorting&Searching 旋转数组二分法查找 @CareerCup
- Sorting&Searching 基于变位词的字符串数组排序 @CareerCup
- CareerCup Chapter 9 Sorting and Searching
- Soring&Searching 合并两个有序数组 @CareerCup
- 非排序数组的二分法(找peak)
- 二分法找数组中第K小的数
- Sorting and Searching
- uva450-sorting&searching
- uva10420--sorting&searching
- 【索引】Sorting/Searching
- 【索引】Sorting/Searching
- 【索引】Sorting/Searching
- 【索引】Sorting/Searching
- 【索引】Sorting/Searching
- Searching and Sorting
- Searching and Sorting
- Searching and Sorting
- 创建分区位图索引测试
- test2
- Dom4j读取XML指定节点
- MySQL服务器最大连接数的合理设置
- 使用百度ueditor在上传图片的时候自定义保存图片位置
- Sorting&Searching 二分法找有空字符串的数组 @CareerCup
- HDU 2052 - Picture
- MySQL索引背后的数据结构及算法原理
- excel技巧总结(不断添加中........)
- 导入数据IMP-00058 ORA-00904
- eclipse插件的发布
- android源码下编译相关汇总
- cocos2dx 不用直接在 onEnter 里面 addTargetedDelegate (或 addStandardDelegate)
- web.xml中load-on-startup的作用