找出字符串
来源:互联网 发布:西安交大网络教育官网 编辑:程序博客网 时间:2024/06/05 00:44
有一个排过序的字符串数组,但是其中有插入了一些空字符串,请设计一个算法,找出给定字符串的位置。算法的查找部分的复杂度应该为log级别。
给定一个string数组str,同时给定数组大小n和需要查找的string x,请返回该串的位置(位置从零开始)。
测试样例:
["a","b","","c","","d"],6,"c"
返回:3
【思路】二分查找,需要特殊处理的是当str[mid]==" "时,无法判断去低区间还是高区间,解决办法是,向左遍历到第一个不是不空的字符串,再做比较。如果左边全部为空,则跳到右半边。
class Finder {public: int findString(vector<string> str, int n, string x) { // write code here if(str.size()==0) return -1; int low= 0, high = str.size()-1; while(low <=high){ int mid = low + (high - low) /2; if(str[mid]!=" "){ if(x==str[mid]) return mid; else if(x < str[mid]){ high = mid-1; }else if(x > str[mid]){ low = mid +1; } }else{ int i = mid; while(i >=low && str[i]==" ") --i; if(i < low) low = mid +1; if(x == str[i]) return i; else if(x > str[i]) low = i +1; else if(x < str[i]) high = i -1; } } return -1; }};
0 0
- 找出字符串
- 找出字符串
- 找出字符串
- 找出字符串
- 找出字符串
- 找出字符串
- 找出字符串
- 找出字符串的组合
- 找出字符串中的中文
- 牛客网 | 找出字符串
- java找出字符串中的汉字
- 找出字符串中最长数字
- 找出字符串中最长的数字字符串
- 从字符串中找出数字字符串
- 找出字符串中最长的数字字符串
- 找出字符串中最长数字字符串
- 在字符串中找出第一个数字
- 找出给定字符串对应的序号...
- Yahoo军规34(转载)
- android的fragment使用中static静态fragment实例遇到的坑
- 环信tokey转字符串
- php实现扫描附件的功能,并判断是否是目录,递归访问目录,返回上一层目录功能的实现
- 语法杂项技术小结
- 找出字符串
- struts2中常用Result类型type的用法
- new和alloc init的区别
- android 购物车 listview嵌套问题
- com.mysql.jdbc.PacketTooBigException 问题解决
- SCU 4515 又见背包(dp)
- 用boost::lexical_cast进行数值转换
- Text::CSV_XS, parse(), fields(), error_input()
- struts2中result详解