diff --git a/README.md b/README.md index 4c36daa..75612c2 100644 --- a/README.md +++ b/README.md @@ -58,6 +58,36 @@ ---- +KMP算法 +public class KMP { + private int[][] dp; + private String pat; + + public KMP(String pat) { + this.pat = pat; + int M = pat.length(); + // dp[状态][字符] = 下个状态 + dp = new int[M][256]; + // base case + dp[0][pat.charAt(0)] = 1; + // 影子状态 X 初始为 0 + int X = 0; + // 当前状态 j 从 1 开始 + for (int j = 1; j < M; j++) { + for (int c = 0; c < 256; c++) { + if (pat.charAt(j) == c) + dp[j][c] = j + 1; + else + dp[j][c] = dp[X][c]; + } + // 更新影子状态 + X = dp[X][pat.charAt(j)]; + } + } + + public int search(String txt) {...} +} + 本书内容几乎完全来源于网络。 开源项目地址:[https://github.com/hustcc/JS-Sorting-Algorithm](https://github.com/hustcc/JS-Sorting-Algorithm),整理人 [hustcc](https://github.com/hustcc)。