Мне нужно получить всю уникальную подстроку строки.Я сохранил строку в trie
, но я не могу выяснить, как я могу использовать ее для печати всех уникальных подстрок, например
string aab
все уникальные подстроки {"a", "aa", "aab", "ab", "b"}
вот мой код для trie
#include <iostream>
#include <map>
#include <string>
#include <stack>
struct trie_node_t {
typedef std::map<char, trie_node_t *> child_node_t;
child_node_t m_childMap;
trie_node_t() :m_childMap(std::map<char, trie_node_t*>()) {}
void insert( std::string& word ) {
trie_node_t *pNode = this;
for ( std::string::const_iterator itr = word.begin(); itr != word.end(); ++itr) {
char letter = *itr;
if ( pNode->m_childMap.find(letter) == pNode->m_childMap.end()){
pNode->m_childMap[letter] = new trie_node_t();
}
pNode = pNode->m_childMap[letter];
}
}
void print() {
}
};
int main ( int argc, char **argv ) {
trie_node_t trie;
trie.insert(std::string("aab"));
trie.print();
}
Как реализовать функцию print
, которая будет печатать всю уникальную подстроку.
Я ищу Linear time approach
Поскольку я построил trie
, есть ли способ, с помощью которого я могу выполнить итерацию, и всякий раз, когда я посещаю какой-либо узел, я могу напечатать его как уникальную строку.