// 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"));