最大相等的字符串子数组

时间:2012-04-19 16:51:42

标签: c++ algorithm

假设我有两个字符串:

"hello"
"love"

字符串中最大子数组的大小为2:“lo”。

这是另一个例子:

"ABBABBA"
"BBABCBA"
Maximum subarray: "BBAB"
Size: 4

基本上,我怎样才能以最有效的方式解决这个问题?

我的想法如下:

  • 为一个字符串生成所有子数组
  • 为另一个字符串生成所有子数组;
  • 比较所有子阵列
  • 结果是最大匹配子数组的大小

但我认为这是一些看起来很糟糕的蛮力。知道如何改进这个吗?

谢谢!

修改 我也需要字符串。

1 个答案:

答案 0 :(得分:5)

这是一个众所周知的问题Longest Common Substring。它可以在O(mn)中解决,其中mn是各个字符串的长度,使用动态编程方法。维基百科中的文章包含易于遵循的伪代码。