编辑代码

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

int BruteForce(const char* text, const char* pattern) {
    int tLen = strlen(text);
    int pLen = strlen(pattern);
    int index = -1;
    int i , j ;

    // text为空 或 pattern为空 或 text长度<pattern长度,返回-1
    if (tLen == 0 || pLen == 0 || tLen < pLen) {
        return index;
    }

    // 遍历text,尝试在每个位置开始匹配pattern
    for (i = 0; i < tLen - pLen + 1; ++i) {

        // 逐个字符比较text和pattern的对应位置字符是否相等
        for (j = 0; j < pLen; ++j) {
            if (text[i + j] != pattern[j]) {
                break;
            }
        }
        // 如果j等于pattern长度,匹配成功,记录匹配的起始位置
        if (j == pLen) {
            index = i;
            break;
        }
    }

    return index;
}

int main() {
    const char* text = "Computer Science and Technology";
    const char* pat1 = "CSAT";
    const char* pat2 = "and";
    const char* pat3 = " ";

    printf("The index of \"%s\" in \"%s\" is %d\n", pat1, text, BruteForce(text, pat1));
    printf("The index of \"%s\" in \"%s\" is %d\n", pat2, text, BruteForce(text, pat2));
    printf("The index of \"%s\" in \"%s\" is %d\n", pat3, text, BruteForce(text, pat3));
    printf("The index of \"%s\" in \"%s\" is %d\n", text, text, BruteForce(text, text));

    return 0;
}