思路:i j分别为子串和主串上的下标。当i与j不匹配时,j++。
跳出循环的条件:
1.查无此串
2.找到了(i到了末尾,并且全程都没有不匹配)
int check(string S,string L)//S为子串,L为主串
{
bool decision=false;
int i=0;//S
int j=0;//L
while(j<L.length() )
{
if(S[i]==L[j])
{
if(i==S.length()-1)
{
if(!decision) return j-i;
i=0;
decision=false;
}
else
{
i++;
j++;
}
}
else
{
j++;
decision=true;
}
}
return -1;
}
存在可以优化的点:子串上有一些重复查找的字符。
可能的思路和难点:
思路:记录位置
难点:i什么时候等于0