我应该使用哪个数据类型和方法? [英] Which datatype and methods should I use?
问题描述
我想写一种简单的搜索引擎。我有与特定的关键字相关的主要科目的确定数量。这样做的目的是要认识到从输入部分关键词主体。我想使用的:词典<字符串列表<串GT;>
。我会在本词典搜索和查找,例如,所有关键字开始用3个字符字符串
和相关联的主体。
I am trying to write a kind of simple search engine. I have a determined number of main subjects that are associated with specific keywords. The aim is to recognize the main subject from an input partial keyword. I am thinking of using a : Dictionary<string, List<string>>
. I'll have to search in this dictionary and find, e.g., all keywords beginning with a 3 characters string
and their main subject which is associated.
是我的解决方案最好的?而且我怎么能有效地通过这些数据看,无需手动检查每列表
,字符串
按字符串
。
Is my solution the best one ? And how can I efficiently look through those data without having to check manually every List
, string
by string
.
让我知道,如果我'不明确。
Let my know if I'am not clear.
推荐答案
您正在寻找特里数据结构,它是这样做的推荐的方式开始与搜索。这里是一个博客帖子谈论它。你可以在这里找到的来源。
You're looking for Trie data structure, it is the recommended way of doing starts with search. Here is a blog post talking about it. You can find the source here.
下面是如何使用上面的实现,从上述文章中的代码。
Here's how use the above implementation, code from the above article.
//Create trie
Trie < string > trie = new Trie < string > ();
//Add some key-value pairs to the trie
trie.Put("James", "112");
trie.Put("Jake", "222");
trie.Put("Fred", "326");
//Search the trie
trie.Matcher.NextMatch('J'); //Prefix thus far: "J"
trie.Matcher.GetPrefixMatches(); //[112, 222]
trie.Matcher.IsExactMatch(); //false
trie.Matcher.NextMatch('a');
trie.Matcher.NextMatch('m'); //Prefix thus far: "Jam"
trie.Matcher.GetPrefixMatches(); //[112]
trie.Matcher.NextMatch('e');
trie.Matcher.NextMatch('s'); //Prefix thus far: "James"
trie.Matcher.IsExactMatch(); //true
trie.Matcher.GetExactMatch(); //112
//Remove a string-value pair
trie.Remove("James");
这篇关于我应该使用哪个数据类型和方法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!