#include <stdio.h>
#include <string.h>

// BF算法实现：S为主串，T为模式串，返回匹配起始位置（-1表示失败）
int bruteForce(char S[], char T[]) {
    int n = strlen(S);  // 主串长度
    int m = strlen(T);  // 模式串长度

    // 边界情况处理
    if (m == 0) return 0;    // 空模式串匹配成功
    if (m > n) return -1;    // 模式串过长，匹配失败

    int i = 0, j = 0;
    while (i < n && j < m) {
        if (S[i] == T[j]) {  // 字符匹配，指针后移
            i++;
            j++;
        } else {  // 字符不匹配，主串回溯，模式串重置
            i = i - j + 1;
            j = 0;
        }
    }

    // 若模式串遍历完毕，返回起始位置；否则返回-1
    return (j == m) ? (i - j) : -1;
}

// 测试示例
int main() {
    char S[] = "abcdeabc";
    char T[] = "bcd";
    int pos = bruteForce(S, T);
    if (pos != -1) {
        printf("模式串在主串中的起始位置：%d\n", pos);  // 输出0
    } else {
        printf("匹配失败\n");
    }
    return 0;
}
