c# - 使用键查找值,反之亦然

标签 c# algorithm data-structures

首先,为讨厌的标题道歉。稍后我会更正它。

我有如下一些数据,

"BOULEVARD","BOUL","BOULV", "BLVD"

我需要一个复杂度为 O(1) 的数据结构来查找其他单词中的任何一个。例如,如果我使用字典,我需要像这样存储键/值,这对我来说很奇怪,

abbr.Add("BLVD", new List<string> { "BOULEVARD","BOUL","BOULV", "BLVD" });
abbr.Add("BOUL", new List<string> { "BOULEVARD", "BOUL", "BOULV", "BLVD" });
abbr.Add("BOULV", new List<string> { "BOULEVARD", "BOUL", "BOULV", "BLVD" });
abbr.Add("BOULEVARD", new List<string> { "BOULEVARD", "BOUL", "BOULV", "BLVD" });

使用哪种数据结构来使此数据适合我的查询条件?

提前致谢

最佳答案

创建两个 HashMap - 一个将单词映射到组号。另一个将组号映射到单词列表。这样可以节省一些内存。

Map<String, Integer> - Word to Group Number
Map<Integer, List<String>> - Group Number to a list of words

您需要两次 O(1) 查找 - 首先获取组号,然后根据它 - 获取单词列表。

关于c# - 使用键查找值,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8809305/

相关文章:

c# - Visual Studio 在 if 语句后添加空格

algorithm - 给定素数 N,计算下一个素数?

ruby - ruby 中的中序遍历仅打印根注释

java - 具有 O(m (log n + log m)) 时间复杂度的算法,用于在每行排序的 n*m 矩阵中查找第 k 个最小元素?

c# - FirstOrDefault 如何使用条件评估内部 FirstOrDefault?

c# - IIS应用程序池过程使用大量内存

c# - 没有选项卡的 WPF 选项卡控件

java - 如何使用随机唯一数字从大小(等于用户输入)填充数组?编译器

c - 使用链表实现队列中的"Segmentation fault (core dumped)"

JavaScript请解释一下这个语法