数据结构和算法-字符串匹配

1. BF

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public int strStr(String haystack, String needle) {
if (needle.length() == 0) return 0;
char[] arr1 = haystack.toCharArray();
char[] arr2 = needle.toCharArray();
for (int i=0; i<arr1.length; i++) {
int p1 = i;
int p2 = 0;
while (p1 < arr1.length && p2 < arr2.length && arr1[p1] == arr2[p2]) {
p1++;
p2++;
}
if (p2 == arr2.length) return i;
}
return -1;
}

2. RK

3. BM

4. KMP

5. Trie树

6. AC自动机