找出字符串

来源:互联网 发布:2017年sas数据分析大赛 编辑:程序博客网 时间:2024/06/16 12:41

题目描述

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

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

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

返回:3

【思路】题目要求log级别复杂度,已经排好序的用二叉查找

class Finder {public:    int findString(vector<string> str, int n, string x) {        // write code here        if(n<=0) return -1;        int low = 0, 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;    }};


0 0