首页 > 编程语言 > 详细

蓝桥学院2019算法题2.18

时间:2019-02-18 15:51:49      阅读:162      评论:0      收藏:0      [点我收藏+]

题3:在有空字符串的有序字符串数组中查找

技术分享图片

算法思路:

  字符串比较方法compareTo()。按字典顺序比较两个字符串。该比较基于字符串中各个字符的 Unicode 值。按字典顺序将此 String 对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果按字典顺序此 String 对象位于参数字符串之前,则比较结果为一个负整数。如果按字典顺序此 String 对象位于参数字符串之后,则比较结果为一个正整数。如果这两个字符串相等,则结果为 0;compareTo 只在方法 equals(Object) 返回 true 时才返回 0

 1 package recursion;
 2 
 3 /**
 4  * @author zsh
 5  * @company wlgzs
 6  * @create 2019-02-18 15:21
 7  * @Describe 题3·在有空字符串的有序字符串数组中查找
 8  * 有个排序后的字符串数组,其中散布着一些空字符串,
 9  * 编写一个方法,找出给定字符串(肯定不是空字符串)的索引。
10  */
11 public class Main6 {
12 
13     /**
14      * 查找给定字符串(肯定不是空字符串)的索引
15      * @param arr 待查找的字符数组
16      * @param p 待查找的字符串
17      * @return 字符串在数组中的位置索引
18      */
19     static int indexOf(String[] arr,String p){
20         int begin = 0;
21         int end = arr.length-1;
22         while (begin <= end){
23             int middle = ((begin+end) >>> 1);
24             while (arr[middle].equals("")){
25                 middle++;
26                 //注意
27                 if (middle > end){
28                     return -1;
29                 }
30             }
31             if (arr[middle].compareTo(p) > 0){
32                 end = middle -1;
33             }else if (arr[middle].compareTo(p) < 0){
34                 begin = middle + 1;
35             }else {
36                 return middle;
37             }
38         }
39         return -1;
40     }
41 
42     public static void main(String[] args) {
43         String[] arr = new String[]{"a","","ac","","ad","b","","ba"};
44         System.out.println(indexOf(arr,"b"));
45         System.out.println(indexOf(arr,"abc"));
46     }
47 }

 

蓝桥学院2019算法题2.18

原文:https://www.cnblogs.com/zsh-blogs/p/10395923.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!