代码:
//暴力法
int ViolentMatch(char* s, char* p)
{
int m_slen = strlen(s);
int m_plen = strlen(p);
int i = 0;
int j = 0;
int nflag = -1;
while (i<m_slen&&j<m_plen)
{
j = 0;
if (s[i] == p[j])//如果第一个元素匹配上则进行下面的匹配
{
nflag = i;
//分别下一个元素开始比较
i++;
j++;
while (j<m_plen&&i<m_slen)
{
if (s[i]!=p[j])
{
nflag = -1;
break;
}
j++;
i++;
}
}
else
{
//第一个元素匹配不上则看看下一个字符能否匹配
i++;
}
}
return nflag;
}
int main()
{
int nfalg = ViolentMatch("he88888lloty","llo8");
cout << nfalg << endl;
nfalg = ViolentMatch("he88888lloty", "88");
cout << nfalg << endl;
nfalg = ViolentMatch("he88888lloty", "oty");
cout << nfalg << endl;
system("pause");
return 0;
}
结果:
看看缺点:
下一次会从原串的B开始查找,回溯到原匹配的下一个字符
下一节讲解一个牛逼的匹配模式。