Générer tous les sous-chaînes pour une chaîne donnée

Donné une chaîne s, quelle est la méthode la plus rapide pour générer un ensemble de tous ses uniques des sous-chaînes?

Exemple: pour str = "aba" nous aurions substrs={"a", "b", "ab", "ba", "aba"}.

Les naïfs algorithme serait de parcourir l'ensemble de la chaîne de génération de sous-chaînes d'une longueur de 1..n à chaque itération, ce qui donne un O(n^2) limite supérieure.

Est une meilleure liés possible?

(ce qui est techniquement devoirs, de sorte que les pointeurs ne sont la bienvenue)

  • vous obtenez l'efficacité de l'algo? Merci de le partager si vous l'avez. TIA.
  • Je ne me souviens pas vraiment de ce qui s'est passé. Mais plus vraisemblablement, j'ai fini par mettre en place une sorte de suffixe de l'arbre. N'avez pas le code plus, désolé.
  • L'algorithme proposé ne pas s'exécuter en O(n2) le temps!
InformationsquelleAutor Yuval Adam | 2010-04-01