class Solution {
public:
int findString(vector<string>& words, string s) {
int l=0,r=words.size()-1;
while(l<r){
int mid=l+r>>1;
//找到离mid最近的一个非空字符串
for(int i=1;i<r-l&&words[mid]=="";i++){
if(mid-i>=l&&words[mid-i]!=""){
mid=mid-i;
break;
}
if(mid+i<=r&&words[mid+i]!=""){
mid=mid+i;
break;
}
}
if(mid==l||mid==r) break;
if(words[mid]=="") return -1;
else if(words[mid]<s) l=mid+1;
else r=mid;
}
if(words[l]==s) return l;
if(words[r]==s) return r;
return -1;
}
};
面试题 10.05. 稀疏数组搜索
于 2024-04-02 16:36:37 首次发布
该代码片段展示了Solution类中的findString函数,它使用二分查找策略在一个字符串向量中查找给定的子串s,提高了搜索效率。
摘要由CSDN通过智能技术生成