问题引出:
有一个文本串S,和一个模式串P,现在要查找P在S中第一次出现的位置,该怎么查找呢?
我们假设现在文本串S匹配到 i 位置,模式串P匹配到 j 位置,
于是有以下两种情况:
1.字符匹配成功(即S[i] == P[j]),则i++,j++,继续匹配下一个字符
2.字符匹配失配(即S[i]! = P[j]),令i = i - (j - 1),j = 0。相当于每次匹配失败时,i 回溯,j 被置为0
具体代码如下:
int ViolentMatch(char* s, char* p)
{
int sLen =