c# - 用于在 C# 中存储关键字和同义词的数据结构?

标签 c# data-structures

我正在用 C# 开发一个项目,我需要存储 10 到 15 个关键字及其同义词。

我想到的第一种存储方式是使用类似于 List> 的二维列表,这样它看起来像:

关键字1同义词1同义词2

关键字2同义词1

关键字3 同义词1 同义词2 等等

我开始考虑的是,如果我得到一个输入字符串并将其拆分以搜索每个单词以查看它是否是列表中的关键字或关键字的同义词,那么二维列表是否适合这个或将搜索它会不会太慢了?

希望我的问题是有道理的,如果不清楚,我可以澄清任何问题。谢谢!

最佳答案

will searching [the list] be too slow?

当您谈论 10..15 个关键字时,很难想出一种效率低到足以让最终用户注意到速度缓慢的算法。根本没有足够的数据来减慢现代 CPU 的速度。

一种方法是构建一个 Dictionary<string,string>将每个同义词映射到它的“规范”关键字。这将包括规范版本本身:

var keywords = new Dictionary<string,string> {
    ["keyword1"] = "keyword1"
,   ["synonym1"] = "keyword1"
,   ["synonym2"] = "keyword1"
,   ["keyword2"] = "keyword2"
,   ["synonym3"] = "keyword2"
,   ["keyword3"] = "keyword3"
};

请注意关键字和同义词如何显示为键,而只有关键字显示为值。这使您可以查找关键字或同义词,并取回有保证的关键字。

关于c# - 用于在 C# 中存储关键字和同义词的数据结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41250568/

相关文章:

algorithm - 设计一个数据结构

java - 在段落中和跨段落搜索

C++ 模板类的运算符

algorithm - 奥赛罗棋盘游戏的简单数据结构?

c# - 哪些因素会影响 ExecuteReader 的持续时间?

C#:列出程序集中的所有类

c# - Azure函数 "Could not load file or assembly"

c# - 使用接口(interface)而不是具体类型 IEnumerable 导致异常

c# - 在 Windows 8 上设置前景窗口

c - 双链表递归的问题