- public class Main {
- //求两个串最长公共子序列的长度
- //abcdef abc abd bdf
- public static int f(String s1,String s2){
- if(s1.length()==0||s2.length()==0){
- return 0;
- }
- /**
- * 主体部分
- */
- if(s1.charAt(0)==s2.charAt(0)){ //如果头相同
- return f(s1.substring(1),s2.substring(1))+1; //在交给下级的比较结果中加1
- }else{
- return Math.max(f(s1.substring(1),s2),f(s1,s2.substring(1))); //返回:max的选择执行,谁大执行谁
- //执行方式(降低规模!!!):谁大切谁,轮流切
- }
- }
- /**
- * 主体逻辑:
- * 1.比较第一个,相同就加1继续执行(过程)
- * 2.不同就去掉长的头元素,继续比较(变化)
- * 3.一直到有一方为0,返回0种情况(出口)
- * @param args
- */
- public static void main(String[] args) {
- int k=f("fabcdk","xbacd");
- System.out.println(k);
- }
- }
相关文章
- 12-21基于DP的LCS(最长公共子序列)问题
- 12-21SAM求多个串的最长公共子串
- 12-21求两个字符串的最长公共子串(LCS)
- 12-21SPOJ 1811 Longest Common Substring (后缀自动机第一题,求两个串的最长公共子串)
- 12-21求最长上升子序列的长度(动态规划)
- 12-21最长公共子串(Longest Common Substring)和最长公共子序列(Longest Common Subsequence)
- 12-21b_lc_长度为 3 的不同回文子序列(统计两个相同字符中间有多少个不同字符)
- 12-21AcWing 799. 最长连续不重复子序列 双指针(一般先写一个朴素暴力的做法,然后看两个指针直接是否存在单调关系,如果存在,就想方法优化)
- 12-21求两个字符串的最大公共子串
- 12-21【ZH奶酪】如何用Python计算最长公共子序列和最长公共子串