第一部分是求解一个辅助的匹配数据结构,比如你说的题解中,无论是求解 next 数组还是求借这个 dfa,都是这部分。这部分可以理解成动态规划。
第二部分是具体的利用这个辅助数据做匹配,这部分不是动态规划。
不过整体,通常不会把 kmp 和动态规划联系起来。说实话,将这种经典算法和算法思想联系起来,是挺虚的,我个人认为并不有助于理解经典算法本身。比如 Prim 算法背后有贪心的思想,但是了解这一点并不会让你对 Prim 理解的更深刻;Dijkstra 背后既有贪心的思想,又有动态规划的思想,同样,我不认为了解这一点会让你对 Dijkstra 理解的更深刻:)