程序员面试金典——11.5找出字符串
Solution1:我的答案。加强版的二分查找,嘿嘿嘿
class Finder {
public:
int findString(vector<string> str, int n, string x) {
// write code here
if(n < 0)
return -1;
int low = 0, high = str.size() - 1;
while(low <= high) {
int mid = (low + high)/2;
int low_mid = mid, high_mid = mid;
if(str[mid] != "") {
if(str[mid] == x)
return mid;
else if(str[mid] < x)
low = mid + 1;
else
high = mid - 1;
}
else if(str[mid] == "") {
while(str[low_mid] == "" && low_mid > low)
low_mid--;
while(str[high_mid] == "" && high_mid < high)
high_mid++;
if(str[low_mid] == x)
return low_mid;
else if(str[low_mid] < x)
low = high_mid;
else
high = low_mid - 1;
}
}
return -1;
}
};