[英]Finding the first element that starts with a specified String in a sorted String array in Java
我在Java中有一個排序的String數組。 我試圖找到第一個以該數組中用戶指定的String開頭的元素。 我首先考慮二進制搜索,但它找到相等的String而不是以用戶指定的String開頭的String。 我應該如何修改二進制搜索,以便實現我想要做的?
如果元素不存在,二進制搜索可以找到“小於所需元素的最后一個元素”(有時稱為“應該插入它的索引”)。
通過使用此功能進行二進制搜索,您可以找到一個元素並檢查:
此功能非常常見 - 例如,它存在於java的Arrays.binarySearch()
。 來自javadocs:
返回:搜索鍵的索引(如果它包含在數組中); 否則,( - (插入點) - 1)。 插入點定義為將鍵插入數組的點:第一個元素的索引大於鍵
從剛剛找到的索引中,很容易找到所需的元素。
代碼快照:
String[] arr = { "aa" , "bb","c", "cc" , "ccc", "cccc", "ddD" };
int idx = Arrays.binarySearch(arr, "c");
if (idx < 0)
System.out.println(arr[-1 * idx - 1]);
else System.out.println(arr[idx]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.