字符串匹配暴力法代码示例
2020年7月29日 更新
开启更多功能,提升办公效能
// Java
public static int forceSearch(String txt, String pat) {
    int M = txt.length();
    int N = pat.length();

    for (int i = 0; i <= M - N; i++) {
        int j;
        for (j = 0; j < N; j++) {
            if (txt.charAt(i + j) != pat.charAt(j))
                break;
        }
        if (j == N) {
            return i;
        }
        // 更加聪明? 
        // 1. 预先判断 hash(txt.substring(i, M)) == hash(pat)
        // 2. KMP 
    }
    return -1;
}


//C/C++
int forceSearch(string text, string pattern) {
    int len_txt = text.length();
    int len_pat = pattern.length();

    for (int i = 0; i <= len_txt - len_pat; i++) {
        int j = 0;
        for (j = 0; j < len_pat; j++) {
            if (text[i + j] != pattern[j]) break;
        }
        if (j == len_pat) {
            return i;
        }
    }
    return -1;
}


# Python
def forceSearch(txt, pat):
n, m = len(txt), len(pat)
for i in range(n-m+1):
for j in range(m):
if txt[i+j] != pat[j]:
break
if j == m:
return i
return -1



// Javascript
function bf(text, pattern) {
let n = text.length;
let m = pattern.length;
for (let i = 0; i < n - m + 1; i++) {
let matched = true;
for (let j = 0; j < m; j++) {
if (source[i + j] !== pattern[j]) {
matched = false;
break;
}
}
if (matched) return true;
}
return false;
}

console.log(bf("abcabcabx", "abcabx"));