C# 中存储关键字和同义词的数据结构?

Pau*_*aul 1 c# data-structures

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

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

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

关键字2 同义词1

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

我开始考虑的是,如果我获取一个输入字符串并将其拆分以搜索每个单词,看看它是否是列表中的关键字或关键字的同义词,二维列表是否适合此操作,或者是否可以搜索它太慢了?

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

das*_*ght 5

搜索[列表]会太慢吗?

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

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

var keywords = new Dictionary<string,string> {
    ["keyword1"] = "keyword1"
,   ["synonym1"] = "keyword1"
,   ["synonym2"] = "keyword1"
,   ["keyword2"] = "keyword2"
,   ["synonym3"] = "keyword2"
,   ["keyword3"] = "keyword3"
};
Run Code Online (Sandbox Code Playgroud)

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