Implement strStr().
Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.
/**
* 字符串haystack是否存在子串needle
* @param haystack
* @param needle
* @return
*/
public int strStr(String haystack, String needle) {
if (haystack == null) {
return -1;
}
if (needle == null || needle.length() == 0) {
return 0;
}
if (needle.length() > haystack.length()) {
return -1;
}
char[] source = haystack.toCharArray();
char[] target = needle.toCharArray();
char first = target[0];
int max = source.length - target.length;
for (int i = 0; i <= max; i++) {
//寻找子串第一个字符
if (source[i] != first) {
while (++i <= max && source[i] != first) ;
}
if (i <= max) {
int j = i + 1;
int end = i + target.length;
for (int k = 1; j < end && source[j] == target[k]; j++,k++);
//匹配字符串
if (j == end) {
return i;
}
}
}
return -1;
}