适用于单词由26个小写英文字母组成的情况,具体按题意稍作修改。
const int TRIE_NODE_SIZE = 26; // 字典树节点 structTrieNode { TrieNode* next[TRIE_NODE_SIZE]; bool isEnd; TrieNode() { for (int i = 0; i < TRIE_NODE_SIZE; ++i) { next[i] = nullptr; } isEnd = false; } }; // 字典树 class Trie { public: // 构造根节点 Trie() { root = new TrieNode(); } // 字典树中插入插入word void insert(string word) { TrieNode* node = root; for (const auto& ch : word) { if (node->next[ch - 'a'] == nullptr) { // 创建节点 node->next[ch - 'a'] = new TrieNode(); } node = node->next[ch - 'a']; } node->isEnd = true; } public: TrieNode* root; // 根节点 };
应用/练习题:
Leetcode 139. 单词拆分leetcode 208. 实现 Trie (前缀树)leetcode 面试题 16.02. 单词频率剑指 Offer II 063. 替换单词leetcode 677. 键值映射剑指 Offer II 065. 最短的单词编码
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)