我目前正在开发文本比较工具。为了进行适当的比较,我希望将文本与它们的公共线对齐,并且一旦在最少变化的线上完成。我有一个锯齿状的阵列,Levenshtein从一条线到另一条线的距离,现在我需要一种方法来找到该阵列中的“最常见因子”部分,它基本上是最低值的最长对角线。为了使事情变得更有趣,如果值超过15,则需要返回-1,因为这被视为两条线之间没有共同点的阈值。因为我无法改变周围的线,如果已经在其间进行了不同的分配,我不能将最后一行分配给第二行。加上最后一个索引不一定分配给最后一行,在这种情况下,任何无法获得赋值的“多余”行也将得到-1的值。
左侧输入和右侧预期输出的示例:
(04, 05, 07, 09, 16, 84, 13, 17, 01) >> 04
(12, 13, 00, 05, 03, 00, 17, 19, 81) >> 00
(81, 00, 15, 00, 00, 84, 16, 01, 44) >> 00
(12, 06, 17, 83, 84, 12, 09, 15, 23) >> 09
(01, 09, 14, 83, 81, 15, 06, 00, 00) >> 00
(82, 83, 84, 81, 86, 80, 89, 87, 85) >> -1
(15, 12, 03, 00, 88, 82, 22, 56, 00) >> 00
(00, 85, 15, 23, 45, 12, 04, 04, 16) >> -1
我认为我需要某种递归算法,但我无法理解如何设置它。这可能看起来不太优雅,但它是我必须处理的预先存在的代码,因此我无法真正改变所有内容。
我知道这听起来有点奇怪,所以提前感谢那些对我有暗示的人。