最长公共子序列

Posted baishouzu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最长公共子序列相关的知识,希望对你有一定的参考价值。

最长公共子序列

思路:

首先子序列是非连续性的,因此两个字符串的最长公共子序列必然是以两个字符串最先相同的字符开始计算,然后以后面的剩余子串为子问题,因此以此为基础进行递归。

技术图片
 1 /**
 2  * @author: wooch
 3  * @create: 2020/02/12
 4  *
 5  * 最长公共子序列
 6  * 核心思路:
 7  * 首先子序列是非连续性的,因此两个字符串的 最长公共子序列 必然是以两个字符串最先相同的字符开始计算
 8  * 因此以此为基础进行递归
 9  */
10 public class LongestPublicSubSequence {
11     public static void main(String[] args) {
12         int a = longestPublicSubSequence("abcd","xacdb");
13         System.out.println(a);
14     }
15 
16     /**
17      * by recursive
18      * @param strX
19      * @param strY
20      * @return
21      */
22     public static int longestPublicSubSequence(String strX,String strY){
23         if(strX.length()==0||strY.length()==0){
24             return 0;
25         }
26         if(strX.charAt(0)==strY.charAt(0)){
27             return longestPublicSubSequence(strX.substring(1),strY.substring(1))+1;
28         }else{
29             return Math.max(longestPublicSubSequence(strX.substring(1),strY),
30                     longestPublicSubSequence(strX,strY.substring(1)));
31         }
32     }
33 }
View Code

 

以上是关于最长公共子序列的主要内容,如果未能解决你的问题,请参考以下文章

最长公共子序列与最长公共字串

最长公共子序列

最长公共子序列

字符串最长公共子序列问题

最长公共子序列

最长公共子序列