2010-10-24 20 views
1

Hii,la mise en œuvre d'un dictionnaire

je suis tombé sur une question d'entrevue de mettre en œuvre un dictionnaire qui peut mettre en œuvre les caractéristiques de l'auto-complétion, auto - correction, vérifier l'orthographe etc ...

, je voulais savoir quelle structure de données est le meilleur pour la mise en œuvre d'un dictionnaire et comment on se rapproche des caractéristiques ci-dessus nécessaires ...

Tous les liens qui me guident ce sont les bienvenus ...

Répondre

1

Il y a juste la même réponse pour cette genre de problème: un Trie. Jetez un oeil here ..

aussi des arbres suffixe (ou Patricia Trees) peuvent être utiles pour ce but ..

+1

n'a pas vraiment travailler pour l'auto-correction. –

+0

Pour la correction automatique, vous devez utiliser la correction orthographique. Mais je ne pense pas que ce soit une question de structures de données. Plus une question d'algorithmes qui fonctionne sur les structures de données .. Je pense qu'ils peuvent travailler sur des essais de toute façon. En fait, si vous avez un dictionnaire (abstraction de la mise en œuvre), je pense que vous devriez travailler sur la distance de hamming entre ce que l'utilisateur a inséré et les mots plausibles similaires à cela. – Jack

0

Vous pouvez obtenir l'auto-complétion avec un conteneur triés, par exemple un ensemble de chaînes:

#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); 
}