跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • KMP 里面的部分匹配表构造哪位能解释一下第二层的循环吗?
未分類
14 5 月 2020

KMP 里面的部分匹配表构造哪位能解释一下第二层的循环吗?

KMP 里面的部分匹配表构造哪位能解释一下第二层的循环吗?

資深大佬 : qwertyegg 7

fun partialMatchTable(pattern: String): IntArray{     var pmt = IntArray(pattern.length)     var j = 0     for(i in 1 until pattern.length){      //下面这个循环怎么理解?         while(j > 0 && pattern[j] != pattern[i])             j = pmt[j - 1]                 pmt[i] = if(pattern[j] == pattern[i]) ++j else j     }     return pmt } 

在 SO( https://stackoverflow.com/questions/38757553) 上有一个解释:

“if b[i] = j, then for any k < j, s.t P[0..k-1] == P[i-k..i-1], we know that b[j] >= k. At the same time, obviously b[i] > b[j] or b[i] = 0.

What this means is that we can easily enumerate the k values from largest to smallest, by going through b[i] -> b[b[i]] -> b[b[b[i]]]… and so on. “

说实话没有太看懂. 部分匹配表 /next 表 /SO 上面的 b,都是一个东西

大佬有話說 (1)

  • 資深大佬 : QingchuanZhang

    安利一下:[我的 kmp 教程]( https://github.com/SamZhangQingChuan/Editorials/blob/master/%E6%95%99%E7%A8%8B/%E5%AD%97%E7%AC%A6%E4%B8%B2/KMP/KMP.pdf)

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具