找出字符串

来源:互联网 发布:暗黑破坏神2画面优化 编辑:程序博客网 时间:2024/06/07 00:02

题目描述

有一个排过序的字符串数组,但是其中有插入了一些空字符串,请设计一个算法,找出给定字符串的位置。算法的查找部分的复杂度应该为log级别。

给定一个string数组str,同时给定数组大小n和需要查找的string x,请返回该串的位置(位置从零开始)。

测试样例:
["a","b","","c","","d"],6,"c"

返回:3

class Finder{public:    int helper(vector<string>& str,int low,int high,string x,int& flag)    {        //flag的设置可以减少不必要的算法分支        if((low>high)||flag)            return -1;        int mid=(low+high)/2;        if(str[mid]==x)        {            flag=1;            return mid;        }        if(str[mid]=="")        {            int left=helper(str,low,mid-1,x,flag);            int right=helper(str,mid+1,high,x,flag);            if(left!=-1)                return left;            else                return right;        }        else        {            if(str[mid]>x)            {                return helper(str,low,mid-1,x,flag);            }            else                return helper(str,mid+1,high,x,flag);        }        return -1;    }    int findString(vector<string> str, int n, string x)    {        // write code here        int flag=0;        return helper(str,0,n-1,x,flag);    }};


0 0
原创粉丝点击