字符串問題之 在有序但含有空的數組中查找字符串

盡可能使用二分查找

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

? ? 關鍵是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);} }

  

轉載于:https://www.cnblogs.com/toov5/p/7398958.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/252039.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/252039.shtml
英文地址,請注明出處:http://en.pswp.cn/news/252039.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python_48re模塊的sub方法

sub是替換的功能 sub(模型&#xff0c;替換為的字符&#xff0c;目標原字符串&#xff0c;替換次數) import re yuanchuan1qaz2wsx3edc4rfv5tgb new_strre.sub(\d,INTNUM,yuanchuan,2) #若果沒有2表示默認替換所有的 print (new_str) #輸出結果為&#xff1a;INTNUMqazINTNUMw…

個人筆記-vuex

個人筆記-vuex 最近想要沉淀下自己的知識體系&#xff0c;以前光看不記&#xff0c;當時記得&#xff0c;過段時間記憶就模糊了&#xff0c;好腦子不如爛筆頭&#xff0c;古人誠不欺我&#xff0c;所以現在決定給用自己的語言方式來給自己記個筆記。 vuex vuex 有什么好講的呢&…

常用模塊之hashlib,configparser,logging模塊

常用模塊二 hashlib模塊 hashlib提供了常見的摘要算法&#xff0c;如md5和sha1等等。 那么什么是摘要算法呢?摘要算法又稱為哈希算法、散列算法。它通過一個函數&#xff0c;把任意長度的數據轉換為一個長度固定的數據串&#xff08;通常用16進制的字符串表示&#xff09;。 注…

iPhone屏幕各種尺寸分辨率(更新至XS)

iPhone屏幕各種尺寸分辨率&#xff08;更新至XS&#xff09; DeviceLogic PointLogic PixelSizeScaleiPhone 2G480 320480 3203.51xiPhone 3480 320480 3203.51xiPhone 3GS480 320480 3203.51xiPhone 4480 320960 6403.52xiPhone 4S480 320960 6403.52xiPhone 5568 …

浙江嘉興徒步游

最近參加了一個徒步團&#xff0c;趁著周末時光&#xff0c;來了一場徒步旅游&#xff0c;不一樣的體驗圖片發自簡書App一開始進山探秘外蒲島的路程&#xff0c;荒草叢生圖片發自簡書App樹木郁郁蔥蔥&#xff0c;藍天白云&#xff0c;一切都很沒好圖片發自簡書App漫山遍野都開滿…

ASP.NET Web API 2 過濾器

前言 我們知道 ASP.NET Web API 過濾器&#xff0c;也是屬于消息處理機制中的一部分。正因如此&#xff0c;我們經常使用它來完成對請求的授權驗證、參數驗證&#xff0c;以及請求的 Log 記錄&#xff0c;程序異常捕獲等。 1. 常用的四大過濾器 ASP.NET Web API 2 中的所有…

java的ThreadLocal類的使用方法

java的ThreadLocal類的使用方法&#xff0c;ThreadLocal是一個支持泛型的類&#xff0c;用在多線程中用于防止并發沖突問題。比如以下的一個樣例&#xff0c;就是用于線程添加1&#xff0c;可是相互不沖突 package com.test.threadlocal;import java.util.concurrent.ExecutorS…

為選擇合適的ERP供應商,是否該發布需求建議書(RFP)?

全球有成百上千家企業資源規劃 (ERP) 解決方案供應商。在開展挑選 ERP 供應商的項目時&#xff0c;不可能與所有這些供應商都進行接觸。不斷縮小這一領域供應商的范圍&#xff0c;直到最終敲定最適合的入圍名單&#xff08;通常被稱為“最終候選人名單”&#xff09;是項目成功…

kettle插入更新流程

kettle轉換步驟工作組件 這里有四個類構成了這個kettle 步驟/節點&#xff0c;每一個類都有其特定的目的及所扮演的角色。 TemplateStep: 步驟類實現了StepInteface接口&#xff0c;在轉換運行時&#xff0c;它的實例將是數據實際處理的位置。每一個執行線程都表示一個此類的實…

打開mobilenet——ssd的demo.py顯示這樣的錯誤解決方法:Intel MKL FATAL ERROR: Cannot load libmkl_avx.so or libmkl_def.s

終于找到方法了&#xff1a; ubuntu14.04打開終端&#xff1a; conda install nomkl numpy scipy scikit-learn numexpr conda remove mkl mkl-service一切ok。。。。。

C++ class、struct區別

一、默認訪問控制不同&#xff08;最主要&#xff09; struct默認為public&#xff0c;class默認為private。這個訪問控制既是指成員的默認訪問屬性&#xff0c;又指繼承時默認的繼承屬性。 二、定義template時不同 在模版中&#xff0c;類型參數前面可以使用class或typename&a…

Alpine Linux詳解

簡介 Small. Simple. Secure.Alpine Linux is a security-oriented, lightweight Linux distribution based on musl libc and busybox. Alpine Linux 是一個社區開發的面向安全應用的輕量級Linux發行版。 Alpine 的意思是“高山的”&#xff0c;它采用了musl libc和busybox以減…

java stream 原理

java stream 原理 需求 從"Apple" "Bug" "ABC" "Dog"中選出以A開頭的名字&#xff0c;然后從中選出最長的一個&#xff0c;并輸出其長度 1. 最直白的實現 缺點 迭代次數過多頻繁產生中間結果&#xff0c;性能無法接受2. 平常寫法 int …

ubuntu文本模式獲得權限修改profile

針對ubuntu14.04以下&#xff0c;越舊版本&#xff0c;舊的指令也有效。 進入登錄頁面&#xff0c;按shiftaltF1進入root環境&#xff0c;驗證用戶名密碼。 然后輸入&#xff1a;cd /etc 進入etc文件 在輸入&#xff1a;/usr/bin/sudo vi profile 進入profile文件的文本編輯模…

here文檔 here doc EOF重定向

here文檔 here doc EOF重定向 http://www.cnblogs.com/xiangzi888/archive/2012/03/24/2415077.html 在shell腳本程序中&#xff0c;向一條命令傳遞輸入的一種特殊方法是使用here文檔。一個here document就是一段帶有特殊目的的代碼段。它使用I/O重定向的形式將一個命令序列傳…

Java常量池理解與總結

2019獨角獸企業重金招聘Python工程師標準>>> 一.相關概念 什么是常量用final修飾的成員變量表示常量&#xff0c;值一旦給定就無法改變&#xff01;final修飾的變量有三種&#xff1a;靜態變量、實例變量和局部變量&#xff0c;分別表示三種類型的常量。Class文件中…

轉載:https://blog.csdn.net/dcrmg/article/details/52939318

張正友相機標定Opencv實現以及標定流程&&標定結果評價&&圖像矯正流程解析&#xff08;附標定程序和棋盤圖&#xff09;使用Opencv實現張正友法相機標定之前&#xff0c;有幾個問題事先要確認一下&#xff0c;那就是相機為什么需要標定&#xff0c;標定需要的輸…

Redis學習筆記--Redis數據過期策略詳解==轉

本文對Redis的過期機制簡單的講解一下  講解之前我們先拋出一個問題&#xff0c;我們知道很多時候服務器經常會用到redis作為緩存&#xff0c;有很多數據都是臨時緩存一下&#xff0c;可能用過之后很久都不會再用到了&#xff08;比如暫存session&#xff0c;又或者只存放日行…

會員連鎖配置以及金額走向

PS&#xff1a;所有電子支付方式的資金走向都是同樣的&#xff0c;配置的是什么支付方式就走什么支付方式;下面以支付寶為例說明 一、連鎖非總機模式 資金走向&#xff1a; 支付寶&#xff1a;收到的錢在主賬號配置的支付寶&#xff0c;會員卡的金額在主賬號 微信&#xff1a;收…

Python標準模塊--logging

Python標準模塊--logging參考http://www.cnblogs.com/zhbzz2007/p/5943685.html1 logging模塊簡介logging模塊是Python內置的標準模塊&#xff0c;主要用于輸出運行日志&#xff0c;可以設置輸出日志的等級、日志保存路徑、日志文件回滾等&#xff1b;相比print&#xff0c;具備…