日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

字符串问题之 在有序但含有空的数组中查找字符串

發(fā)布時間:2023/12/13 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 字符串问题之 在有序但含有空的数组中查找字符串 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

盡可能使用二分查找

? ?假設在 left ?right 之間查找 ?

? ? 關(guān)鍵是mid處理過程 導致 left 跟 right 的改變 ?控制去哪里尋找

? ? 分如下情況:

? ?若 mid處 不為空,并且 此處就是 str ? 那么記下 mid ?,同時把right-1 ? (往左尋找)

? ?若 mid處不為空,并且此處不是str,比較字典順序

? ?若 mid處為空, 則通過while控制向左邊移動,左邊沒有元素,或者找到的字典順序小于str,left=mid+1

? ? ? ? ? ? ? ? ? ? ? ? ? ?字典順序大于str ?或者等于 str ?此時 res = strs[i].equals(str) ? i : res ? ? ? ?然后right=i-1; ?注意是i-1 ?此處的位置-1

package TT;import java.awt.List;public class Test3 {public static int getIndex (String[] strs, String str){if(strs==null || strs.length==0 ||str ==null){return -1;}int res = -1;int left =0;int right = strs.length;int mid = 0;int i =0;while(left <= right){mid=(left+right)/2;if(strs[mid]!=null && strs[mid].equals(str)){res = mid;right = mid-1;}else if(strs[mid]!=null){if(strs[mid].compareTo(str)<0){left = mid+1;}else {right = mid-1;}}else{i = mid; //把此時的mid記下了while(strs[i]==null && --i>=left);if(i<left || strs[i].compareTo(str)<0){left = mid+1;}else{res =strs[i].equals(str) ? i :res;right = i-1;}}}return res;}public static void main(String[] args){String[] objects = new String[6];objects[0]=null;objects[1]="b";objects[2]=null;objects[3]="b";objects[4]=null;objects[5]="a";String s = "b";int a = getIndex(objects,s);System.out.println(a);} }

  

轉(zhuǎn)載于:https://www.cnblogs.com/toov5/p/7398958.html

總結(jié)

以上是生活随笔為你收集整理的字符串问题之 在有序但含有空的数组中查找字符串的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。