这是一个经典的最长公共子串问题,可以使用动态规划配合滚动数组高效求解。题目保证最长公共连续片段存在且唯一,因此只需在遍历过程中记录全局最优解即可。
设文本序列 S 的长度为 n,T 的长度为 m(1≤n,m<5000)。定义:
dp[j]:以 S 当前处理到的第 i 个字符(下标从 1 开始)和 T 的第 j 个字符结尾的最长公共后缀长度。dp[0..m],外层循环扫描 S 的每个字符,内层从右向左更新 dp。考古学家发现了两段古老的铭文,现在需要找出它们之间连续相同的最长文字片段,以推测它们的共同起源。
给定两个文本序列 S 和 T,请你找出它们最长的公共连续片段。题目保证这样的最长连续片段存在且唯一。
两个文本序列的长度均不小于 1 且小于 5000。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册