public static int binarySearch(int[] nums, int target) {
int start = 0, end = nums.length - 1;
while (start <= end) {
int mid = (start + end) / 2;
if (nums[mid] == target) {
if (mid < end && nums[mid] == nums[mid + 1]) {
start = mid + 1;
} else if (mid > start && nums[mid] == nums[mid - 1]) {
end = mid - 1;
} else {
return mid;
}
} else if (nums[mid] < target) {
start = mid + 1;
} else {
end = mid - 1;
}
}
return -1;
}
public static void subStr(String s) {
Set<String> stringSet = new HashSet<String>();
for (int i = 0; i < s.length(); i++) {
for (int j = i + 1; j <= s.length(); j++) {
String tstr = s.substring(i, j);
if (stringSet.contains(tstr)) {
System.out.print(tstr + " ");
}
stringSet.add(tstr);
}
}
}