在嘈杂的组中寻找最大的匹配子串

时间:2021-06-25 16:15:06

标签: algorithm

鉴于数据 (17) HANWHA Q.PEAK DUO-G7 32517) HANWHA Q.PEAK DUO-G7 325) HANWHA Q.PEAK DUO-G7 325HANWHA Q.PEAK DUO-G7 325,我只想提取 (17) HANWA Q.PEAK DUO-G7 325。我正在查看的数据总是以这种奇怪的方式重复,尽管一些重复组被几个字符偏移,所以它不一定能够被硬编码。我唯一的想法是效率很低,两个大小不断增加的滑动窗口如下所示。

  1. 窗口大小 = n-1
  2. 从左边开始一个窗口,第二个窗口偏移 1 个字符。
  3. 检查它们是否是相同的字符串。
  4. 将窗口大小减 1,从左侧开始窗口“a”和窗口“b”偏移 1 个字符。
  5. 如果它们不匹配,则在每次迭代中将窗口 b 滑动到不匹配的一个字符上。
  6. 如果仍未找到匹配项,请将窗口 A 移到一个字符上并将 B 重置为向右一个字符。
  7. 继续直到找到匹配项。

这是一个例子:
这里窗口 A 表示为 {},B 表示为 []。 字符串“ABCAB”

{A[BCA}B] - ABCA != BCAB, hit edge, decrement window size  
{A[BC}A]B - ABC != BCA  
{AB[C}AB] - ABC != CAB, hit edge, decrement window size  
{A[B}C]AB - AB != BC  
{AB}[CA]B - AB != CA  
{AB}C[AB] - AB == AB, match found

这是 o(n^3) 并且我很好奇是否有我没有想到的更好的方法 - 也许对数据进行聚类?

0 个答案:

没有答案
相关问题