程序员面试金典——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;
}
};
本文介绍了一种改进的二分查找算法,用于在包含空字符串的数组中查找目标字符串。该算法通过特殊的逻辑处理空字符串,提高了查找效率。

被折叠的 条评论
为什么被折叠?



