/**
* 二分查找,查找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;
		}
	}
}