子字符串查找


1. 暴力子字符串查找算法

使用了一个指针 i 跟踪文本,一个指针 j 跟踪模式。

对于每个 i ,代码首先将 j 重置为 0 并不断将它增大,直至找到了一个不匹配的字符或是模式结束(j==M)为止。

  1. public static int search(String pat, String txt) {
  2. int M = pat.length();
  3. int N = txt.length();
  4. for (int i = 0; i <= N - M; i++) {
  5. int j;
  6. for (j = 0; j < M; j++) {
  7. if (txt.charAt(i+j) != pat.charAt(j))
  8. break;
  9. }
  10. if (j == M)
  11. return i;
  12. }
  13. return N;
  14. }

2. KMP 字符串查找算法