A94834.[模版]最长公共子序列

普及-

通过率:0%

时间限制:1.00s

内存限制:128MB

题目描述

给定两个由小写拉丁字母组成的字符串 sstt。请你找出这两个字符串的最长公共子序列的长度

为了明确定义:

  1. 子序列 (Subsequence):如果字符串 aa 可以通过从字符串 bb 中删除若干个(可能是零个或全部)字符,且保持剩余字符的相对顺序不变而得到,则称 aabb 的子序列。
    • 例如:"ace" 是 "abcde" 的子序列,但 "ca" 不是 "abcde" 的子序列。
  2. 公共子序列 (Common Subsequence):如果序列 zz 既是 ss 的子序列,又是 tt 的子序列,则称 zzsstt 的公共子序列。
  3. 最长公共子序列 (LCS):在 sstt 的所有公共子序列中,长度最长的那个序列。

你需要输出这个最长公共子序列的长度

输入格式

第一行包含一个字符串 ss (1s30001 \le |s| \le 3000)。
第二行包含一个字符串 tt (1t30001 \le |t| \le 3000)。

输入保证两个字符串仅包含小写拉丁字母。

输出格式

输出一个整数,表示 sstt 的最长公共子序列的长度。

输入输出样例

  • 输入#1

    abcvdefgh
    bcefg

    输出#1

    5
  • 输入#2

    abacaba
    acbda

    输出#2

    4
  • 输入#3

    abc
    def

    输出#3

    0

说明/提示

说明

在第一个样例中,最长公共子序列是 "bcefg",其长度为 5。
在第二个样例中,最长公共子序列是 "acba"(或者 "acda"),其长度为 4。
在第三个样例中,没有公共字符,长度为 0。

首页