• 最长公共子串


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

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

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

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

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

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

  • 相关阅读:
    线程和进程
    Map和Collection
    数组
    泛型
    堆和栈
    Java的三大特性
    Log日志
    关系运算
    switch
    main 及Scanner
  • 原文地址:https://www.cnblogs.com/bill-h/p/14310958.html
Copyright © 2020-2023  润新知