zoukankan      html  css  js  c++  java
  • 最长公共子串

    最长公共子串问题是寻找两个或多个已知字符串最长的子串。此问题与最长公共子序列问题的区别在于子序列不必是连续的,而子串却必须是。

    求解最长公共子串可以借助动态规划法,思路如下:

    求 'ABCDEF' 和 'BCDF' 的最长公共子串,首先可以建立两组字符串,分别是
    'A'
    'AB'
    'ABC'
    'ABCD'
    'ABCDE'
    'ABCDEF'
    以及
    'B'
    'BC'
    'BCD'
    'BCDF'

    从这两组当中各选一个字符串,对选中的两个字符串求一个“最长公共尾串”,所谓“最长公共尾串”,就是说它必须是这两个字符串的尾巴,且越长越好。

    当选择到的两个字符串正好都是以“最长公共子串”为尾巴时,这两个字符串的“最长公共尾串”就是“最长公共子串”。在这个例子中,当选中字符串'ABCD'和'BCD'时,其“最长公共尾串”是'BCD',正是问题的解。

    当我们求两个长度分别为 N 和 M 的字符串的“最长公共尾串”时,可以根据其前 N-1 和 M-1 个字符组成的字符串的“最长公共尾串”求得。

  • 相关阅读:
    bugku 求getshell
    HTTP之content-type
    web之robots.txt
    HTTP之User-Agent大全
    bugku 细心
    PHP输入流
    bugku web8
    PHP中sha1()函数和md5()函数的绕过
    bugku 各种·绕过
    【学术篇】烧水问题 打表找规律做法
  • 原文地址:https://www.cnblogs.com/bill-h/p/14310958.html
Copyright © 2011-2022 走看看