Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dictionary 对于字典来说,什么样的数据结构在创建后不会改变,不区分大小写的键查找和支持;用“开始”;_Dictionary_Data Structures_Tree_Time Complexity - Fatal编程技术网

Dictionary 对于字典来说,什么样的数据结构在创建后不会改变,不区分大小写的键查找和支持;用“开始”;

Dictionary 对于字典来说,什么样的数据结构在创建后不会改变,不区分大小写的键查找和支持;用“开始”;,dictionary,data-structures,tree,time-complexity,Dictionary,Data Structures,Tree,Time Complexity,我需要建立一个具有以下特点的词典: 创造后永不改变 密钥查找需要不区分大小写 支持“从开始”键查找,其中搜索的字符串前缀将返回一组与该片段关联的项 具有忽略大小写哈希函数的完美哈希映射将满足前两个要求,但不满足最后一个要求 我想的只是一个简单的树,其中每个节点都是存储键的to uppered char,查找匹配项需要遍历树,从搜索字符串中对to upperedchar进行二进制搜索 +---+ +---+ | A |

我需要建立一个具有以下特点的词典:

  • 创造后永不改变
  • 密钥查找需要不区分大小写
  • 支持“从开始”键查找,其中搜索的字符串前缀将返回一组与该片段关联的项
具有忽略大小写哈希函数的完美哈希映射将满足前两个要求,但不满足最后一个要求

我想的只是一个简单的树,其中每个节点都是存储键的to uppered char,查找匹配项需要遍历树,从搜索字符串中对
to uppered
char进行二进制搜索

 +---+                    +---+
 | A |                    | B |
 |   |                    |   |
 +---+          +---------------------+
   |            |           |         |
 +---+        +---+       +---+     +---+
 | N |        | A |       | E |     | U |
 |   |        |   |       |   |     |   |
 +---+      +------+      +---+     +----+
   |        |      |        |            |
 +---+    +---+  +---+    +---+        +---+
 | D |    | D |  | C |    | D |        | G |
 +val|    +val|  |   |    +val|        +val|
 +---+    +---+  +---+    +---+        +---+
                     |
                   +---+
                   | K |
                   +val|
                   +---+

这似乎是一个过于简单和幼稚的解决方案。有什么更好的吗?

在你的方法中有很多变化:我会考虑一个TIE的“开始”,并且如果你想通过键更快的查找,考虑一个最小的完美哈希。