【发布时间】:2016-04-13 12:39:02
【问题描述】:
示例 1
假设我有两个数组:
('n','v','a','n','i','n','n','v','a','n')
('a','n','n','n','v','a','n','v','n')
并且我想找到两者之间的所有匹配序列(可能超过两个单元格长左右),它们不是其他较长匹配的子匹配。以下是我认为匹配的内容:
('n','n','v','a','n') = 数组 1 中的位置 5 和数组 2 中的位置 3
数组1:('n','v','a','n','i','n','n','v','a','n')
数组2:('a','n','n','n','v','a','n','v','n')
示例 2
('n','v','a','n','i','n','n','v','i','n')
('a','n','i','n','p','v','i','n','v','n')
在这里,我们有不止一个序列,但它们更短,如下所示:
('a','n','i','n') = 数组 1 中的位置 2 和数组 2 中的位置 0
('v','i','n') = 数组 1 中的位置 7 和数组 2 中的位置 5
数组1:('n','v','a','n','i','n','a','v',' i','n')
数组2:('a','n','i','n','p','v','i','n'强>,'v','n')
总结
两个示例中有多个匹配项,但它们都存在于至少一个数组中的较大匹配项中。
那么,可以实现这一目标的最有效(低内存和高速的平衡,想想移动设备)代码是什么? JavaScript 代码示例会很棒!
【问题讨论】:
-
如果您不理解我的问题或者可以更清楚地说明问题,请发表评论!不要只是投反对票!
-
请发布您的尝试...您尝试了什么?
-
@brso05 我还没有编写任何代码...我只是在脑海中随机出现一些很难用语言或代码表达的东西。抱歉,我没有其他要展示/说的了!
-
@Matthew:啊,我明白了。看起来您正面临着longest common substring problem,以及相应的解决方案。
-
@Matthew:不,计算机科学已知有很多更棘手的问题 :-)
标签: javascript arrays algorithm pattern-matching