第一个版本 Brute Force
// Brute Force - 1
#include <iostream>
using namespace std;
int match(char* p, char* t)
{
size_t n = strlen(t), i = 0;
size_t m = strlen(p), j = 0;
while(j < m && i < n)
{
if (t[i] == p[j]) // 匹配
{
i++; j++; // 转到下一对字符
}
else
{
i -= j - 1; j = 0; // 主串回退、模式串复位
}
}
return i - j; // 返回匹配的起始位置
}
int main()
{
char* t = "abcdefghijklmnopqrstuvwxyz0123456789";
char* p = "xyz";
int index = match(p, t);
cout << index << endl;
return 0;
}
第二个版本 Brute Force
#include <iostream>
using namespace std;
int match(char* p, char* t)
{
size_t n = strlen(t), i = 0;
size_t m = strlen(p), j = 0;
for (i = 0; i < n - m+1; i++)
{
for (j = 0; j < m; j++)
{
if (t[i+j] != p[j])
break;
}
if (j >= m)
break;
}
return i;
}
int main()
{
char* t = "abcdefghijklmnopqrstuvwxyz0123456789";
char* p = "xyz";
int index = match(p, t);
cout << index << endl;
return 0;
}