gpt4 book ai didi

c# - 过滤单词列表的最快方法

转载 作者:行者123 更新时间:2023-11-30 17:59:27 27 4
gpt4 key购买 nike

我有一个包含几个词的列表。我想过滤掉其中一些与特定模式不匹配的内容。将所有匹配项添加到临时列表并将此列表复制到主列表会更快吗?还是从主列表中删除所有不匹配项会更快?我必须尽快过滤 10000 个单词,所以我期待每一个小小的速度提升。

编辑:

string characters = "aAbBcC";
// currentMatches contains all the words from the beginning
List<string> currentMatches = new List<string>();
List<string> newMatches = new List<string>();
foreach (string word in currentMatches)
{
if (characters.IndexOf(word[0]) > -1)
// word match
{
newMatches.Add(word);
}
}
currentMatches = newMatches;

foreach 循环应该检查 word 是否以 characters 的字符之一开头。在这里,我将所有匹配项复制到 newMatches,然后再将所有新匹配项复制到 currentMatches

最佳答案

假设 List<T> 那么您必须考虑以下因素:

  • 如果计数小于容量, Add 方法是一个 O(1) 操作。如果需要增加容量以容纳新元素,则此方法变为 O(n) 操作,其中 n 为 Count;
  • RemoveAt 方法是一个 O(n) 操作,其中 n 是(计数 - 索引)。

如果您创建列表来保存初始容量设置为总字数的匹配项,则 Add永远是 O(1) 并且更快。但是,您需要考虑创建容量设置为总字数的新列表的开销。

最重要的是,您需要对其进行测试,看看哪种方式更适合您的特定场景。

关于c# - 过滤单词列表的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11212088/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com