right集:SAM讀入字符串 a 後能識別的後綴的集合, 這些後綴分別從{r1 , r2 , r3, ... rx}開始。spa
後綴自動機的每一個節點都是一個right集, 由於每一個非葉子節點至少有兩個兒子,因此咱們能夠知道parent樹的總結點個數是O(n)的(大概爲2倍)。字符串
parent樹中的葉子節點的right集大小爲 1,由於任何兩個節點的right集要麼是真包含,要麼是相離,因此全部葉子節點都是相離的,io
那麼咱們能夠經過統計parent樹某個節點的子樹中葉子個數來肯定其Right集的大小。統計
統計字符串 a 在 s 中的出現次數:總結
咱們知道sam讀入一個字符串 a, 會到達一個節點 stateA, 那麼顯然 stateA 的right集的大小即爲答案。集合
不一樣子串個數:co
即全部節點的 val(i) - val(fa(i)) 便可。由於對於一個節點映射出的子串,它們的長度是連續的,而且每一個長度都惟一對應了一個子串。字符