zoukankan      html  css  js  c++  java
  • [codevs3160]最长公共子串解题报告|后缀自动机

     给出两个由小写字母组成的字符串,求它们的最长公共子串的长度。

      样例就觉得不能更眼熟啊...好像之前用后缀数组做过一次

      然后发现后缀自动机真的好好写啊...(当然当时学后缀数组的时候也这么认为...

      

      这道题直接把第一个串放到后缀自动机里

      第二个串在上面做匹配,但是要注意匹配的时候不能乱搞...

      

      刚开始写了一个类似KMP的东西...想想不对啊

      毕竟有些节点的深度是不对的

      然而后来发现,我们可以用一个变量tem来保存当前的长度值

      如果可以继续匹配,这个值就+1

      否则就开始用fail指针不停地退,直到退到某个位置它的子节点中有当前字符了

      然后tem = 这个节点的深度+1

      我是这么理解的...通过观察后缀自动机的过程可以发现

      fail指针指向的节点都是深度确定的节点,如果深度不确定,会新建一个深度确定的点再指向它

      所以通过退fail指针得到的,这个节点的深度一定是对的

      然而它的子节点就不一定了...

      这也是为什么前面能够匹配的时候不能直接用长度...

  • 相关阅读:
    Vue.js组件理解
    Vue.js 基础知识
    JS-WEB-API 整理
    JS面向对象基础
    JS基础知识系统整理(不断更新)
    图解关于pageX,pageY,screenX,screenY,clientX,clientY的区别
    妙味JS学习记录(二)
    Ajax全接触笔记
    妙味JS学习记录(一)
    c#设计模式系列:状态模式(State pattern)
  • 原文地址:https://www.cnblogs.com/mjy0724/p/4478151.html
Copyright © 2011-2022 走看看