边界条件:
1.当标准数组为0 的时候返回0
2.当主数组长度小于标准数组长度的时候返回-1
3.当主数组与标准数组比较的时候注意主数组剩余队列的长度
class Solution {
public int strStr(String haystack, String needle) {
if (needle.length() == 0)
return 0;
// System.out.println("0");
int temporary = -1;
char[] x = haystack.toCharArray();
char[] y = needle.toCharArray();
int lenx = x.length;
int leny = y.length;
if (lenx < leny){
return -1;
}
int flag = 0;
for (int i = 0; i <= lenx - leny; i++) {
if (x[i] == y[0]){
int m = i + 1;
for (int k = 1; k < leny && m < lenx; k++) {
if (x[m] == y[k]){
m++;
}
else {
flag = 1;
break;
}
// else{
// return -1;
// // System.out.println("-1");
// }
}
if (flag == 1){
flag = 0;
continue;
}
return i;
// System.out.println(m);
}
}
return -1;
}
}
题解:两重循环,外层循环主队列,内层循环标准队列,利用break-flag-continue实现比较失败的情况下主队列的继续查找。