日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Trie

發布時間:2025/5/22 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Trie 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關于Trie的幾種實現方式

children node的存儲

1可以用hashmap來存儲children,HashMap<Character, TrieNode> children, 優勢是利用contains函數便于查找

2用數組?TrieNode[] children; 通過index來查找,最多也就26個char(認為忽略大小寫)

Search 函數:iterative 即可,可以將search和startwith合并

My solution :HashMap + iterative

class TrieNode {// Initialize your data structure here.private char value;private boolean isend;// mark whether is end node//children of the nodepublic HashMap<Character, TrieNode> children;public TrieNode() {isend = false;children = new HashMap<Character, TrieNode>();}public TrieNode(char c){value = c;isend = false;children = new HashMap<Character, TrieNode>();}public boolean isEnd(){return isend;}public void setEnd(){isend = true;} }public class Trie {private TrieNode root;public Trie() {root = new TrieNode();}// Inserts a word into the trie.public void insert(String word) {if(word == null || word.length() == 0) return;//bfs level insertTrieNode cur = root;for(int i = 0; i < word.length(); i++){char c = word.charAt(i);HashMap<Character, TrieNode> child = cur.children;if(child.containsKey(c)){//no need insertcur = child.get(c);}else{//insert a new trie nodeTrieNode newchild = new TrieNode(c);child.put(c, newchild);cur = newchild;}}//mark end cur.setEnd();}// Returns if the word is in the trie.public boolean search(String word) {if(word == null || word.length() == 0) return false;TrieNode cur = root;for(int i = 0; i < word.length(); i++){char c = word.charAt(i);HashMap<Character, TrieNode> child = cur.children;if(!child.containsKey(c)){//no char return false;}else{//continue searchcur = child.get(c);}}return cur.isEnd();}// Returns if there is any word in the trie// that starts with the given prefix.public boolean startsWith(String prefix) {if(prefix == null || prefix.length() == 0) return false;TrieNode cur = root;for(int i = 0; i < prefix.length(); i++){char c = prefix.charAt(i);HashMap<Character, TrieNode> child = cur.children;if(!child.containsKey(c)){//no char return false;}else{//continue searchcur = child.get(c);}}return true;}}// Your Trie object will be instantiated and called as such: // Trie trie = new Trie(); // trie.insert("somestring"); // trie.search("key"); View Code

?

其他解法

class TrieNode {// Initialize your data structure here.private char value;private boolean isend;// mark whether is end node//children of the nodepublic TrieNode[] children;public TrieNode() {isend = false;children = new TrieNode[26];}public TrieNode(char c){value = c;isend = false;children = new TrieNode[26];}public boolean isEnd(){return isend;}public void setEnd(){isend = true;} } public class Trie {private TrieNode root;public Trie() {root = new TrieNode();}// Inserts a word into the trie.public void insert(String word) {if(word == null || word.length() == 0) return;//bfs level insertTrieNode cur = root;for(int i = 0; i < word.length(); i++){char c = word.charAt(i);int index = c - 'a';if(cur.children[index] == null){//insert a new nodecur.children[index] = new TrieNode(c);}cur = cur.children[index]; // go down }//mark end cur.setEnd();}// Returns if the word is in the trie.public boolean search(String word) {if(word == null || word.length() == 0) return false;TrieNode cur = root;for(int i = 0; i < word.length(); i++){char c = word.charAt(i);int index = c - 'a';if(cur.children[index] == null){//no such charreturn false;}cur = cur.children[index];}return cur.isEnd();}// Returns if there is any word in the trie// that starts with the given prefix.public boolean startsWith(String prefix) {if(prefix == null || prefix.length() == 0) return false;TrieNode cur = root;for(int i = 0; i < prefix.length(); i++){char c = prefix.charAt(i);int index = c - 'a';if(cur.children[index] == null){//no such charreturn false;}cur = cur.children[index];}return true;}} View Code

?

轉載于:https://www.cnblogs.com/xiaomaoliu/p/4548195.html

總結

以上是生活随笔為你收集整理的Trie的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产免费脚交足视频在线观看 | 最新福利在线 | 欧美xxx视频| 女人的洗澡毛片毛多 | 久色福利| 波多野在线视频 | 日本高清www免费视频 | 精品一区二区三区免费毛片 | 精品日本一区二区三区在线观看 | 国产精品1000部啪视频 | 久久久久免费看 | 天堂欧美城网站网址 | 在线观看www | 国产一区二区三区在线观看视频 | 国产精品一区二区三区免费在线观看 | 九九视屏| 国产精品久久久久毛片软件 | 51国产在线 | 欧美专区在线观看 | 麻豆最新| 国产精品福利一区 | 日产亚洲一区二区三区 | 耳光调教vk| av资源导航 | 精品少妇视频 | 久久男人精品 | 色网在线看 | 亚洲精品欧美激情 | 国产精品每日更新 | 九九色综合网 | 任你操精品视频 | 欧美精品久久久 | a级片免费网站 | 无码一区二区三区免费 | 葵司免费一区二区三区四区五区 | 亚洲综合在线中文字幕 | 国产成人福利视频 | 国产高清视频在线播放 | 波多野吉衣久久 | 日韩狠狠 | 国产日韩成人内射视频 | 亚洲一区二区伦理 | 东南亚毛片 | 欧美.www| 青青草超碰 | 69精品视频| 亚洲欧美在线视频观看 | www.久久av.com | 肥老熟妇伦子伦456视频 | 中文精品一区二区三区 | 在线免费观看黄色小视频 | 欧美激情一级精品国产 | 天堂av在线中文 | 国产超碰91 | 成人看片黄a免费看视频 | 免费av网站在线观看 | 亚洲国产精品成人综合色在线婷婷 | 国产毛片欧美毛片久久久 | 深喉口爆一区二区三区 | 欧美性日韩 | 免费av网站在线 | 污视频免费在线观看网站 | 亚洲免费一区视频 | 国产精品午夜未成人免费观看 | 男女视频在线观看免费 | 亚洲欧美日韩成人在线 | 亚洲另类色综合网站 | 中国老熟妇自拍hd发布 | 免费se99se| 男生草女生视频 | 国产精品一品二区三区的使用体验 | 在线播放av网址 | 亚洲视频精品在线观看 | 亚洲欧美视频 | 一级片中文 | 欧美黑人又粗又大的性格特点 | 爆操老女人 | 久久久久久久久久网站 | 激情六月天婷婷 | 国产又粗又猛又大爽 | 一区二区免费在线播放 | 芒果视频在线观看免费 | 日本成人片网站 | 亚洲精品在线中文字幕 | 丁香花激情网 | 色狠狠综合 | 爱露出 | 真人真事免费毛片 | av在线伊人| 久久精品国产亚洲 | 国产香蕉97碰碰碰视频在线观看 | 一级在线视频 | 成人免费播放视频 | 人人妻人人澡人人爽精品欧美一区 | 国产剧情av引诱维修工 | 成人在线超碰 | 高h乱l高辣h文短篇h | 黄色a网站 | ⅹxxxxhd亚洲日本hd老师 |