String 如何删除两个字符串之间的冗余匹配?

String 如何删除两个字符串之间的冗余匹配?,string,algorithm,match,String,Algorithm,Match,给定两个字符串str1和str2,我有一个匹配列表,将共享子字符串描述为[str1_-beg,str1_-end,str2_-beg,str2_-end]形式的间隔。我想删除匹配中的str1_beg、str1_end和str2_beg、str2_end嵌入到其他匹配中的冗余匹配 对于每个[beg_索引,end_索引]查找[beg_索引,end_索引,end_索引]并删除满足end_索引的索引 这就是O(n^2)首先,您可以更高效地存储匹配项 [str_beg,str2_beg,match_len

给定两个字符串str1和str2,我有一个匹配列表,将共享子字符串描述为[str1_-beg,str1_-end,str2_-beg,str2_-end]形式的间隔。我想删除匹配中的str1_beg、str1_end和str2_beg、str2_end嵌入到其他匹配中的冗余匹配

对于每个[beg_索引,end_索引]查找[beg_索引,end_索引,end_索引]并删除满足end_索引的索引


这就是O(n^2)

首先,您可以更高效地存储匹配项

[str_beg,str2_beg,match_len]
例如,这也使得检查冗余非常容易

for match in matches:
  for i in xrange(len(matches)):
    if matches[i][:2] == match[:2] and mathches[i][2] < match[2]:
      del matches[i]
对于匹配中的匹配:
对于x范围内的i(len(匹配)):
如果匹配[i][:2]==match[:2]和mathches[i][2]<匹配[2]:
del匹配[i]

我假设您的匹配列表被分配给一个名为matches的变量,并且具有我上面提出的结构,所以ma。我使用的是<操作符,而不是如果我需要循环遍历所有匹配项,并且对于每个匹配项,循环遍历所有匹配项来确定是否嵌入了匹配项,这将是缓慢的。先分类怎么样?