#1790. LCS 问题

LCS 问题

题目描述

如果长度为 nn 的字符串 s=s1s2sns=s_1s_2\cdots s_n 满足以下条件,则称它是 单调不减 的:

  • 对于 1i<n1\le i<n,有 sisi+1s_i\le s_{i+1}。这里是按照 ASCII 码比较,即 a<b<c<<za < b < c < \cdots < z

例如,acosabsnnu 是单调不减的,但 sinpzr 不是。

简单来说就是字符串已经按照字母顺序从小到大排序。

给出仅由小写字母组成的 单调不减 的字符串 s,ts, t,求 sstt最长公共子串 的长度。

所谓 子串,就是从一个字符串当中截取一段 完整 的部分,且不改变顺序。例如 abcd 的子串有 ababc,但 abdba 不是它的子串。

所谓 最长公共子串 ,就是两个字符串的 最大的共有 的子串。例如字符串 abcbadbc 的最长公共子串就是 bc

输入格式

包含两行。第一行一个字符串 ss,第二行一个字符串 tt

输出格式

仅一个非负整数,表示最长公共子串的长度。若不存在最长公共子串,输出 0

aabbcdeee
abbcccee
4
abcd
abcd
4
aaaabbbdddeeeefffgggggghhhhiiiiiijjjjkklllmnoooooopppppqrrrrtttttttuuuuuvvwwwwxxxxxyyzzzz
aaaccdddddddeeeeffffghhhhhiiiijjkkkklllmmmnnnnoooooppqqqrrrrrrrsssssttuuuvvvvvwwwwwwyyzzz
10

样例 1 解释

s = a abbc deee

t = abbc ccee

最长公共子串为 abbc,长度为 44。可以证明无法找到更长的公共子串。

提示

规定 s,t|s|,|t| 分别指代字符串 sstt 的长度。

  • 对于 30%30\% 的数据满足,1s,t1021\leq |s|,|t|\leq 10^2
  • 其中 10%10\% 的数据满足,两个字符串只含有字符 a
  • 另外 10%10\% 的数据满足,两个字符串只含有字符 ab
  • 对于 100%100\% 的数据满足,1s,t2×1051\le |s|, |t| \le 2\times 10^5

sstt 仅由小写字母组成,保证 sstt 是单调不减的。