【发布时间】:2017-07-06 18:20:32
【问题描述】:
我有以下问题: 给定每个 1024 位的 15 位字符串,在同一位置的不同字符串中查找模式的最佳方法是什么?模式看起来如何对我来说并不重要(当然长度> 1),我只想找到至少两个字符串匹配的部分(尽可能长)。 一个例子:
- 10010...
- 00011...
- 00101...
在这里,我想从前两个字符串(位置 2 到 4,频率 2 也很好......)中获取 001,从第二个和第三个字符串(位置 1 到 2)中获取 00。
我希望,问题现在很清楚了......有人有想法吗? 谢谢!
【问题讨论】:
-
您好,欢迎来到 Stack Overflow,请花点时间通过 welcome tour 了解您在此处的方式(并获得您的第一个徽章),阅读如何创建 Minimal, Complete, and Verifiable example并检查How to Ask Good Questions,这样您就有机会获得反馈和有用的答案。
-
如果你把它们当作字符串,并试图找到共同的最长子串怎么办?那里有很多算法。如果长度不是太长,你也可以用蛮力来做
-
但我想找到两个字符串中相同位置的所有常见子字符串。不明白你的方法如何适合这个问题......
-
请再澄清一点。让我们在您的示例中再添加两个字符串: 10011, 10000 。然后对于位置 2 的模式 001,您希望它转储 {10010, 00011, 10011} 但它不转储较小的子集,例如 {10010, 00011} 或 {00011, 10011} ?或者你也想要后者?您是否还希望它输出与位置 2 处的 00 匹配的 { 00011, 10000 },或者这不是因为模式长度小于位置 2 处的 001 模式而引起的?还是因为这里只有两个匹配的字符串而另一个有 3 个而不感兴趣?
-
您所说的“最佳”是什么意思?最快的?您是否只需要一种与编程语言无关的算法,还是您心中有一种特定的语言?我可以为这个问题想出几个解决方案,但你需要缩小你的问题的范围。输入是否具有特殊属性,还是完全随机的?
标签: string algorithm pattern-matching