博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode208:Implement Trie (Prefix Tree)
阅读量:5297 次
发布时间:2019-06-14

本文共 2220 字,大约阅读时间需要 7 分钟。

Implement a trie with insert, search, and startsWith methods.

Note:

You may assume that all inputs are consist of lowercase letters a-z.

Hide Tags Data Structure Trie

实现一棵Trie树以及实现查询的功能,依据中的分析和伪代码能够非常迅速地实现:

runtime:68ms

class TrieNode {public:    // Initialize your data structure here.    TrieNode() {            words=0;            prefixs=0;            for(int i=0;i<26;i++)               edges[i]=NULL;         }        int words;        int prefixs;        TrieNode* edges[26];};class Trie {public:    Trie() {        root = new TrieNode();    }    // Inserts a word into the trie.    void insert(string word) {            insertHelper(root,word,0);    }    // Returns if the word is in the trie.    bool search(string word) {            return searchHelper(root,word,0)!=0;    }    // Returns if there is any word in the trie    // that starts with the given prefix.    bool startsWith(string prefix) {            return startsWithHelper(root,prefix,0)!=0;    }    void insertHelper(TrieNode * node,string &word,int pos) {        if(pos==word.size())        {            node->words++;            node->prefixs++;        }        else        {            node->prefixs++;            int char_code=word[pos]-'a';            if(node->edges[char_code]==NULL)                node->edges[char_code]=new TrieNode();            insertHelper(node->edges[char_code],word,pos+1);        }    }    int searchHelper(TrieNode * node,string &word,int pos)    {        int char_code=word[pos]-'a';        if(pos==word.size())            return node->words;        else if(node->edges[char_code]==NULL)            return 0;        else             return searchHelper(node->edges[char_code],word,pos+1);    }    int startsWithHelper(TrieNode * node,string &word,int pos)    {        int char_code=word[pos]-'a';        if(pos==word.size())            return node->prefixs;        else if(node->edges[char_code]==NULL)            return 0;        else            return startsWithHelper(node->edges[char_code],word,pos+1);    }private:    TrieNode* root;};// Your Trie object will be instantiated and called as such:// Trie trie;// trie.insert("somestring");// trie.search("key");

转载于:https://www.cnblogs.com/blfbuaa/p/7121078.html

你可能感兴趣的文章
jquery对id中含有特殊字符的转义处理
查看>>
获取元素样式信息于三中获取方式的区别
查看>>
遇麻烦,Win7+Ubuntu12.10+Archlinux12.10 +grub
查看>>
SqlBulkCopy大批量导入数据
查看>>
HTTP协议 (四) 缓存
查看>>
python学习之random
查看>>
【转载】测试计划模板
查看>>
pandas 修改指定列中所有内容
查看>>
ubuntu18.04 复制或剪切某文件夹下的前x个文件到另一个文件夹下
查看>>
input的value中有特殊字符
查看>>
字符串压缩
查看>>
用Lua定制Redis命令
查看>>
小程序-canvas在IOS手机层级最高无法展示问题
查看>>
「 Luogu P2285 」打鼹鼠
查看>>
lua语言入门之Sublime Text设置lua的Build System
查看>>
解决win8使用内置管理员不能打开应用商城、天气等问题
查看>>
vue.js基础
查看>>
电脑的自带图标的显示
查看>>
globalization与全球化
查看>>
[转载] redis 的两种持久化方式及原理
查看>>