【发布时间】:2010-11-18 01:41:38
【问题描述】:
我有 2 个lists<string> 的项目,源和目标。源列表中的项目将在目标列表中有 0 到 n 个匹配项,但不会有重复匹配项。
考虑到两个列表都已排序,您将如何在性能方面最有效地进行匹配。
例子:
source = {"1", "2", "A", "B", ...}
target = {"1 - new music", "1 / classic", "1 | pop", "2 edit", "2 no edit", "A - sing", "B (listen)", ...}
基本上匹配是简单的前缀匹配,但是假设你有一个名为MatchName的方法。如果您要进行更优化的搜索,您可以使用新功能。 NameMatch 只是比较两个字符串并返回一个布尔值。
最后 source[0] 将有 source[0]。在这种情况下匹配包含 target[0, 1 和 2]。
【问题讨论】:
-
这和你的其他问题本质上是不是一模一样:stackoverflow.com/questions/1250853/…
-
我想在这个中,您可以根据元素已排序的知识添加更多优化。
-
它们很相似,但这个关注的是循环。我想知道是否必须为源列表中的每个项目循环目标列表。
-
不,您应该只能在排序后循环一次。
-
更新了我的答案。认为这会奏效。
标签: c# .net performance optimization search