找出字符串

来源:互联网 发布:逻辑门电路实验数据 编辑:程序博客网 时间:2024/05/23 11:56

题目描述

有一个排过序的字符串数组,但是其中有插入了一些空字符串,请设计一个算法,找出给定字符串的位置。算法的查找部分的复杂度应该为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)    {        int begin=0,end=n-1,mid;        while(begin<=end)        {            mid=(begin+end)/2;            while(mid<n&&str[mid]=="")                mid++;            if(mid==n-1&&str[mid]=="")            {                while(mid>0&&str[mid]=="")                    n--;            }            if(str[mid]==x)                return mid;            else if(str[mid]>x)                end=mid-1;            else                begin=mid+1;        }        return -1;    }};


0 0