我应该使用哪个数据类型和方法? [英] Which datatype and methods should I use?

查看:150
本文介绍了我应该使用哪个数据类型和方法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想写一种简单的搜索引擎。我有与特定的关键字相关的主要科目的确定数量。这样做的目的是要认识到从输入部分关键词主体。我想使用的:词典<字符串列表<串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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆