完整实现代码:
java
class Solution {
public int strStr(String haystack, String needle) {
char[] hayArr = haystack.toCharArray();
char[] neeArr = needle.toCharArray();
int needlelen = neeArr.length;
int haystacklen = hayArr.length;
for(int i = 0;i<haystacklen;i++){
if(hayArr[i] == neeArr[0]){
if(i + needlelen > haystacklen){
return -1;
}
}
boolean match = true;
for(int j = 0;j<needlelen;j++){
if(hayArr[i+j] != neeArr[j]){
match = false;
break;
}
}
if(match){
return i;
}
}
return -1;
}
}
解题思路:
将字符串都转化为字符数组,在haystack这个数组中查找元素和needle这个数组的第一个元素相同的位置,如果有判断这个位置的索引加上needle数组的长度是否超过haystack这个数组的长度,如果超过接直接返回-1,接着设置一个标志位,用来标记是否符合判断条件,从符合条件的位置开始向后一一比较两个数组中的元素,只要有不相同的元素,将把标志设为false,并且结束当前for循环,继续检查后边的符合条件的位置,如果条件成立,标志位就会为true冰并且返回i对应的结果索引,如果都不成立,最后程序会直接返回-1