参考: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
}