给定两个字符串 str1 和 str2,我有一个匹配列表,将共享子字符串描述为 [str1_beg, str1_end, str2_beg, str2_end] 形式的间隔。我想删除冗余匹配,其中 str1_beg、str1_end 和 str2_beg、str2_end 从匹配中嵌入到其他匹配中。
问问题
152 次
2 回答
0
首先,您可以更有效地存储匹配项。
[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]
我假设您的匹配列表被分配给一个名为匹配的变量,并且具有我上面提出的结构,所以 ma. 我使用的是 < 运算符而不是 <= 运算符,因为在它们相等的情况下,它们是完全相同的匹配,我假设您不会有两次相同的匹配。在我检查两个 matche 的 [:2] 切片的地方,我检查了它们列表的前 2 个元素,它们是起始位置。
于 2012-09-14T12:26:33.800 回答
0
对于每个 [beg_index, end_index] 找到 [beg_index_new, end_index_new] 并删除满足 end_index < end_index_new 和 beg_index >= beg_index_new 的那些。
那是 O(n^2)
于 2012-09-14T12:19:33.453 回答