博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
careercup-排序和查找 11.5
阅读量:6088 次
发布时间:2019-06-20

本文共 1047 字,大约阅读时间需要 3 分钟。

11.5 有个排序后的字符串数组,其中散布着一些空字符串,编写一个方法,找出给定字符串的位置。

解法:

如果没有那些空字符串,就可以直接使用二分查找法。比较待查找字符串str和数组的中间元素,然后继续搜索下去。针对数组中散布一些空字符串的情形,我们可以对二分查找法稍作修改,所需的修改就是mid进行比较的地方,如果mid为空字符串,就将mid换到离它最近的非空字符串的位置。

 

C++实现代码:

#include
#include
#include
using namespace std;int searchR(vector
&str,int left,int right,string s){ if(left>right) return -1; int mid=(left+right)/2; if(str[mid].empty()) { int l=mid-1; int r=mid+1; while(1) { if(l
right) return -1; if(l>=left&&!str[l].empty()) { mid=l; break; } if(r<=right&&!str[r].empty()) { mid=r; break; } l--; r++; } } if(str[mid]==s) return mid; else if(s
&str,string s){ return searchR(str,0,str.size()-1,s);}int main(){ vector
vec= { "","abc","","hfh","jhfh","kdhf","","sss","zzz",""}; cout<
<

 

转载地址:http://uapwa.baihongyu.com/

你可能感兴趣的文章
springmvc+dubbo整合学习
查看>>
Spring Cloud构建统一配置中心
查看>>
SpringBoot使用数据库
查看>>
React.js 实战之 JSX 简介
查看>>
微服务java_b2b商城系统_java商城源码100%开源适合2次开发(十二):使用Spring Cloud Sleuth和Zipkin进行分布式链路跟踪...
查看>>
squid透明代理客户端打开网页变慢
查看>>
25个最常用的iptables策略
查看>>
我的友情链接
查看>>
AIX rootvg镜像的标准做法
查看>>
把视频设置成屏保_已迁移
查看>>
【Tensorflow】辅助工具篇——tensorflow slim(TF-Slim)介绍
查看>>
fckeditor上传.变_突破
查看>>
APP-V5.0的Sequencer过程
查看>>
对mysql中last_insert_id()的新理解
查看>>
unset 命令
查看>>
我的友情链接
查看>>
Linux学习笔记3_基本命令复习1(ls cd mkdir touch vi vim cat echo rm)
查看>>
如何删除windows server 2008R2上面的OU
查看>>
MyBatis中关于别名typeAliases的设置
查看>>
Java算法之 n个整数中找出连续m个数加和是最大
查看>>