串的模式匹配:暴力算法,时间复杂度为O(n)。
#include <bits/stdc++.h>
using namespace std;
// 返回第一次匹配到的位置
int bf(char *s, char *t) {
int i=0,j=0,k=0;
while (i < strlen(s) && j < strlen(t)) {
if (s[i] == t[j]) {
i ++, j++;
} else {
j = 0; // 模式串回溯
i = ++k; // 文本串移动到失配的下一个位置
}
}
if (j >= strlen(t)) {
return k;
} else {
return -1;
}
}