Data structures 实现字典

Data structures 实现字典,data-structures,autocomplete,nlp,spell-checking,Data Structures,Autocomplete,Nlp,Spell Checking,嗨 我在面试中遇到了一个问题,就是如何实现一个字典,它可以实现自动补全、自动更正、拼写检查等功能 实际上,我想知道哪种数据结构最适合实现字典,以及如何实现上述所需功能 欢迎在这方面为我提供指导的任何链接…对于这类问题,只有相同的答案:aTrie。看一看 此外,后缀树(或Patricia trees)也可用于此目的。是一种常见的结构。它们是有限状态自动机的特例,也用于和。您可以使用任何排序的容器自动完成,例如一组字符串: #include <limits> #include <s

我在面试中遇到了一个问题,就是如何实现一个字典,它可以实现自动补全、自动更正、拼写检查等功能

实际上,我想知道哪种数据结构最适合实现字典,以及如何实现上述所需功能


欢迎在这方面为我提供指导的任何链接…

对于这类问题,只有相同的答案:aTrie。看一看


此外,后缀树(或Patricia trees)也可用于此目的。

是一种常见的结构。它们是有限状态自动机的特例,也用于和。

您可以使用任何排序的容器自动完成,例如一组字符串:

#include <limits>
#include <set>
#include <string>
#include <vector>

int main()
{
    std::set<std::string> words = {"foo", "bar", "barber", "baz", "quux"};

    std::string starting_with = "ba";
    auto lower = words.lower_bound(starting_with);
    auto upper = words.upper_bound(starting_with + std::numeric_limits<char>::max());

    std::vector<std::string> suggested_words(lower, upper);
}
#包括
#包括
#包括
#包括
int main()
{
std::set words={“foo”、“bar”、“barber”、“baz”、“qux”};
std::以=“ba”开头的字符串;
自动下限=字。下限(以开始);
自动上限=单词。上限(以+std::numeric\u limits::max()开头);
std::向量建议_词(下、上);
}

对于自动更正,您必须使用拼写检查。但我不认为这是一个数据结构的问题。更多的是关于数据结构的算法。。我想他们无论如何都会努力的。事实上,如果你有一本字典(从实现中提取),我认为你应该计算出用户插入的内容和类似的合理单词之间的汉明距离。