【问题标题】:Search a given string in a sorted array of Strings in java在java中的字符串排序数组中搜索给定的字符串
【发布时间】:2016-06-09 03:08:58
【问题描述】:

我编写了一个程序,它在字符串的排序数组中搜索字符串。我的程序工作正常,除了我的数组中有空字符串的时候。下面是代码:

public class StringSearch {

public static int binarySearchString(String[] s, String search)
{   

     int low = 0;
     int high = s.length-1;
     int mid;

     while(low<=high)
     {  mid = (high+low)/2;
         if(search.compareTo(s[mid])<0)
             high = mid-1;
         else if(search.compareTo(s[mid])>0)
             low = mid+1;
         else
             return mid;

     }
     return -1;

 }
 public static void main(String[] args)
 {

     String[] str = {"abc", "", "def", "ijk", "mnop", "xyz"};
     String toSearch = new String("ijk");
     int result = binarySearchString(str, toSearch);
       if(result == -1)
          System.out.println("String not found!!");
       else
          System.out.println("String found at array index:" + result);
 }

 }

我在哪里做错了?

【问题讨论】:

  • 二进制搜索不适用于未排序的数组。
  • 请解释一下“除了有空字符串的时候”是什么意思。怎么了?如果数组已排序,空字符串在哪里?你是如何对数组进行排序的?
  • 从技术上讲,如果那里随机有一个空白字符串,则不会对其进行排序...
  • 我错了..谢谢你们.. :)

标签: java arrays string search


【解决方案1】:

您的数组实际上没有排序:空字符串应该在数组中排在第一位。

但是,话虽如此,您的“ijk”测试用例在中点之后仍应正常工作,因此避免了数组的未排序部分。

所以我运行了你的代码,它正确返回

String found at array index:3

搜索“”无效。

在调用binarySearchString之前添加Arrays.sort(str)

【讨论】:

    猜你喜欢
    • 2020-08-06
    • 1970-01-01
    • 2016-11-15
    • 2013-11-28
    • 2017-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    相关资源
    最近更新 更多