本题主要采用的是递归思想(分类讨论)
- 判断当前两个字符串是否有一个长度为0,若有则直接返回0即可
- 判断当前两个字符串中的第一位是否相同,若相同则直接双方去掉第一位并返回调用该方法(参数为两方截断首位的字符串)再加1(当前相同的第一位,所以返回值加1);若不相同,则返回调用本方法参数分别为字符串a截取首位和字符串b 与 字符串a和字符串b截取首位的最大值返回回去(在此采用了三元表达式)。
package cn.alex.demo;
public class MaxComSeq {
public static void main(String[] args) {
String stra = "abcd";
String strb = "dcbab";
System.out.println("最大公共子序列长度为:"+maxComSeq(stra, strb));
}
public static int maxComSeq(String stra,String strb) {
if(stra.length()==0 || strb.