将以 SiS_iSi 结尾的最长单词长度 LiL_iLi 求出来之后倒着遍历,更新以 iii 到 nnn 结尾的单词能到的最小位置 mimimi,当 mi>imi > imi>i 时就输出 -1 。并搞个变量 kkk 初值为 nnn,当 i=ki = ki=k 时就答案加一并且 mi−1→kmi-1\to kmi−1→k。
证明:易得 SnS_nSn 是必须有单词覆盖的,那么从 n−Lnn - L_nn−Ln 到 n−1n - 1n−1 必须要有一个单词覆盖 n−Lnn-L_nn−Ln,且这个单词 S[i,j]S[i,j]S[i,j] 肯定是 iii 越小越好,也就是 mimimi。