/**
* 二分查找,查找target,在区间[start,end]之间
* 有重复元素,返回最后一个下标
* 其他情况返回-1
*/
int bisearch(vector<int> arr, int len, int target, int start, int end)
{
if(start <= end)
{
int mid = (start + end) / 2;
int val = arr[mid];
if (target < val)
{
return bisearch(arr, len, target, start, mid - 1);
}
else if (target > val)
{
return bisearch(arr, len, target, mid + 1, end);
}
else
{
if (mid + 1 < len && arr[mid + 1] == arr[mid])
{
return bisearch(arr, len, target, mid + 1, end);
}
return mid;
}
}
else
{
return -1;
}
}
/**
* 输出字符串中的所有子串:
* 例如:abcab
* 输出: a, b, ab
* 子串连续
*/
void getAllSub(string str)
{
int len = str.length();
for(int i = 0; i < len; i++)
{
for (int j = i; j < len; j++)
{
string s = str.substr(i, (j - i + 1));
cout<<s.c_str()<<endl;
}
}
}