找出字符串
题目描述
有一个排过序的字符串数组,但是其中有插入了一些空字符串,请设计一个算法,找出给定字符串的位置。算法的查找部分的复杂度应该为log级别。
给定一个string数组str,同时给定数组大小n和需要查找的string x,请返回该串的位置(位置从零开始)。
测试样例:
["a","b","","c","","d"],6,"c"
返回:3
class Finder { public: int findString(vector<string> str, int n, string x) { if(n <= 0) return -1; int low = 0; int high = n-1; while(low <= high){ int mid = low+(high-low)/2; if(str[mid] == x) return mid; else if(str[mid] > x) high = mid-1; else low = mid+1; } return -1; } };