c++ - 最大相等字符串子数组

标签 c++ algorithm

假设我有两个字符串:

"hello"
"love"

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

这是另一个例子:

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

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

我的想法是:

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

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

谢谢!

编辑 我也需要字符串。

最佳答案

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

关于c++ - 最大相等字符串子数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10232938/

相关文章:

c# - Qt 非托管 C++ 类可与 C# .Net 一起使用

c++ - 未命名的命名空间和 Visual C++ 链接器性能

c++ - 将非 NULL argv 传递给 MPI_Comm_spawn

c++ - 如何使用拓扑排序结果来解决依赖关系生成最终目标代码?

需要二次时间的算法任务?

c++ - 将 OpenGL 中的 3 层与背景混合

c++ - 带有 constexpr 的编译时命名参数习语

algorithm - 遗传算法的实际应用

c++ - 如何沿行组合两个 vector vector ?

圆上两度之间最短行进方向的算法或公式?