参考:https://blog.csdn.net/raelum/article/details/128823560

#include <iostream>
#include <string>
using namespace std;
/*
1、s[ ]是模式串,即比较长的字符串。
2、p[ ]是模板串,即比较短的字符串。
BF
*/
int violentMatch(string &s, string &p)
{
    int i = 0, j = 0;
    while (i < s.size() && j < p.size())
    {
        if (s[i] == p[j])
            i++, j++; //如果每个字符匹配成功,那么继续往后
        else
            i = i - j + 1, j = 0; //一旦发现不同,模板串的j归为0,回到开头,但是i变成 i - j + 1;
    }
    if (j == p.size())
        return i - j; //返回第一次匹配到的位置
    else
        return -1; //匹配不到,返回-1
}
int main(void)
{
    string s = "helloworldmeowrian";
    string p1 = "meosfa";
    string p2 = "meow";
    cout << violentMatch(s, p1) << endl; // -1
    cout << violentMatch(s, p2) << endl; // 10
}