Menu
CoddyTech

Longest Common Substring

中等动态规划python iconjava iconcpp iconc iconjs icon+10

给你两个字符串,s1 和 s2。子字符串是从字符串中连续截取的一段字母,例如从 clockwork 中截取的 ork。找出 s1 和 s2 中共有的最长子字符串,并返回它的长度。如果两个字符串中没有相同的字母,答案就是 0。

函数

longestCommonSubstring(s1: string, s2: string) → integer
s1string
第一个字符串
s2string
第二个字符串
返回值integer
两个字符串中都出现的最长连续字母块的长度

约束条件

  • 1 ≤ s1.length ≤ 1000
  • 1 ≤ s2.length ≤ 1000
  • s1 和 s2 由小写英文字母组成。

示例

输入
s1 = "clockwork"s2 = "workshop"
输出
4
解释
work 是 clockwork 的结尾,也是 workshop 的开头,因此它是一个长度为 4 的公共子串,而且两个字符串中都没有更长的相同片段。
challenge icon

进阶

你能否使用滚动哈希,在约 O(n + m) 的时间内测试是否存在长度为 L 的公共子串,然后对 L 进行二分搜索?

重置代码
def longestCommonSubstring(s1, s2):
    # 在这里编写代码

测试 #1

测试 #2

测试 #3

参数

s1 = "clockwork"
s2 = "workshop"

预期输出

4