KMP算法
朴素解法
直观的解法的是:枚举原串 ss 中的每个字符作为「发起点」,每次从原串的「发起点」和匹配串的「首位」开始尝试匹配:
匹配成功:返回本次匹配的原串「发起点」。
匹配失败:枚举原串的下一个「发起点」,重新尝试匹配。
class Solution {
public int strStr(String haystack, String needle) {
char[] str1=haystack.toCharArray();
char[] str2=needle.toCharArray();
int m=str2.length;
for(int i=0;i<=str1.length-m;i++)
{
int a=i;
int b=0;
while(b<m&&str1[a]==str2[b])
{
a++;
b++;
}
if(b==m)
return i;
}
return -1;
}
}