KMP算法--模板

生成 Pattern 的字符串的 next 数组,长度为 m+1

点击查看代码
void getNext(vector<int>& next, string& pattern) {
      int n = pattern.size();
      for (int j = 0, k = -1; j < n; ) {
          if (k == -1 || pattern[j] == pattern[k]) next[++j] = ++k;
          else k = next[k];
      }
      return;
}
----

将 字符串 cur 与 模板串 s 进行匹配

点击查看代码
for (int i = 0, j = 0; i < n;) {
    if (j == -1 || cur[i] == s[j]) {
        ++i;
        ++j;
        if (j == m) {
            // 匹配完成,进入下一次匹配
            j = next[m];
            return true;
        }
    } else {
        j = next[j];
    }
}
posted @ 2023-04-03 22:14  Besnnad  阅读(17)  评论(0)    收藏  举报