首先想到的就是两层循环,外层循环遍历字符串的每一个字符,内存循环对比从当前字符往后是否都和子串的字符相同,然后可以利用flag来进行标识。
int len1=haystack.length();
int len2=needle.length();
if(!haystack.contains(needle)) return -1;//如果不包含该子串直接返回-1;
int i=0;
for(i=0;i<=len1-len2;i++)
{
int flag=1;
for(int j=0;j<len2;j++)
{
if(haystack.charAt(i+j)!=needle.charAt(j))
{
flag=0;//有一个字符不匹配直接退出循环,比较下一个字符
break;
}
}
if(flag==1)
{
return i;
}
}
然后我看题解说能用那个KMP算法,但我没太搞懂,下次再说好了