最长公共子序列
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 }
以上是关于最长公共子序列的主要内容,如果未能解决你的问题,请参考以下文章