刷题24-求两个字符串的最长公共子序列的长度

博客探讨了如何求解两个字符串的最长公共子序列的长度问题,提供了原题链接及扩展题目,通过示例和图解帮助理解算法,并给出了参考代码。
摘要由CSDN通过智能技术生成

原题链接

扩展题目一------求一个字符串的子序列中与另一个字符串相等的个数

题目描述

给定两个字符串str1和str2,输出连个字符串的最长公共子序列。
如过最长公共子序列为空,则输出-1。

输入描述

输出包括两行,第一行代表字符串str1,第二行代表str2。
(1≤length(str1),length(str2)≤5000)

输出描述

输出一行,代表他们最长公共子序列。如果公共子序列的长度为空,则输出-1。

示例

输入:
1A2C3D4B56
B1D23CA45B6A
输出:
123456
说明:
"123456"和“12C4B6”都是最长公共子序列,任意输出一个。

找了两个图片便于理解
图一:
在这里插入图片描述
图二:
在这里插入图片描述

最长公共子序列,最大值一定会出现在最后一个格子里。
参考链接

参考代码

import java.util.Scanner;

public class Main {
   

    public static String process(String str1, String str2) {
   
        if (str1 == null || str1.length() == 0 || str2 == null || str2.length() == 0) {
   
            return "";
        }
        char[] char1 = str1.toCharArray();
        char[] char2 = str2.toCharArray();
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值