匹配字符串的一组字符串,以最大化可能的匹配数

时间:2017-10-04 20:07:27

标签: algorithm string-matching

我有一个非常有趣的问题。

我有一组字符串,我想知道如何最好地匹配另一个字符串中的这些字符串与最大化函数的组合。

一个例子。说我有套:

['aabbcaa', 'bbc']

我有字符串

'fgabbcdaabbcaaef'

,可能的匹配是:

fga[bbc]daadaa[bbc]aaef

fga[bbc]daad[aabbcaa]ef

现在,给定一个简单的最大化函数,我会说fga[bbc]daad[aabbcaa]ef是赢家,因为匹配的总字符数。不同的最大化函数可以为更换的较大单词而不是总字符赋予更多权重。

我很想知道是否有人可以指点我如何做到这一点。在我发现一系列潜在的匹配之后我感到困惑的是,我不确定如何以有效的方式最大化选择的单词集。

字典,字典中的单词以及与之匹配的单词可以是任何大小。

非常感谢我能得到的任何帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

找到了答案并且效果很好。伪代码是:

  • 遍历集合,找到目标字符串中设置字符串匹配的所有位置。存储start_index,end_index,并为该字符串提供分数以进行匹配。我目前使用字符串的长度。
  • 然后使用找到的所有匹配项,通过“加权间隔调度”算法运行它以找到最佳匹配集
  • https://courses.cs.washington.edu/courses/cse521/13wi/slides/06dp-sched.pdf