package com.Proxy; /** * @author Ruth * created on 7/29/2018 * There is an array which is sorted and contains "", check the specified elements in this array, return the index; */ public class TestArray { public static void main(String[] args) { String[] arr = {"A", "B", "", "", "", "C"}; int index = getIndexOfChar(arr, "C"); System.out.println(index); } public static int getIndexOfChar(String[] arr, String str) { if (arr == null || arr.length == 0 || str == null) { return -1; } int left = 0; int right = arr.length - 1; int res = -1; int mid = 0; int i = 0; while (left <= right) { mid = (left + right) / 2; if (arr[mid] != null && str.equals(arr[mid])) { res = mid; right = mid - 1; } else if (arr[mid] != null) { if (arr[mid].compareTo(str) > 0) { right = mid - 1; } else { left = mid + 1; } } else { i = mid; while (arr[i] == null && --i >= left) ; if (i < left || arr[i].compareTo(str) < 0) { left = mid + 1; } else { res = arr[i].equals(str) ? i : res; right = i - 1; } } } return res; } }