【问题标题】:Finding partial substrings within a string在字符串中查找部分子字符串
【发布时间】:2011-04-14 11:49:28
【问题描述】:

我有两个必须比较相似性的字符串。该算法必须设计为找到最大相似度。在这种情况下,顺序很重要,但中间(或丢失)字符不重要。由于各种原因,在这种情况下无法使用编辑距离。

情况基本如下:

string 1: ABCDEFG
string 2: AFENBCDGRDLFG

生成的算法将找到子字符串ABCDFG

我目前有一个递归解决方案,但因为这必须在大量数据上运行,任何改进都将不胜感激

【问题讨论】:

  • 您能发表一下您当前的递归解决方案的描述吗?
  • 你有这方面的语言吗?
  • 只是我,还是这个 NP 难?
  • @Peter:我删除substring 标签的原因是子字符串总是连续的。你想要的是一个不需要连续的子序列。
  • 这里“E”不也是常用子串吗?

标签: algorithm string pattern-matching substring


【解决方案1】:

查看您的唯一示例,您似乎想要找到最长的公共子序列。 看看LCS

只有我一个人,还是这个 NP 难? – David Titarenco(来自评论)

如果你想要任意数量的字符串的 LCS,它的 NP-hard。但是输入字符串的数量是恒定的(在本例中为 2),这可以在多项式时间内完成。

【讨论】:

  • 这是不对的。给定 OP 的示例输入,它将返回 'ABCDFG'
  • @Aaron:您必须稍微修改算法才能找到有助于答案的实际子字符串。但基本思想仍然非常相似。
  • 谢谢,我会考虑修改 LCS 算法
猜你喜欢
  • 1970-01-01
  • 2011-07-13
  • 1970-01-01
  • 2021-08-13
  • 2015-10-28
  • 2017-12-04
  • 1970-01-01
相关资源
最近更新 更多