码迷,mamicode.com
首页 > 其他好文 > 详细

字典树搜索LINTCODE 题目Add and Search Word

时间:2015-11-27 01:00:38      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:

  1. public class WordDictionary {  
  2.     private TrieNode root = new TrieNode();  
  3.   
  4.     public void addWord(String word) {  
  5.         Map<Character, TrieNode> children = root.children;  
  6.         for(int i=0; i<word.length(); i++) {  
  7.             char c = word.charAt(i);  
  8.             TrieNode t;  
  9.             if(children.containsKey(c)) {  
  10.                 t = children.get(c);  
  11.             } else {  
  12.                 t = new TrieNode(c);  
  13.                 children.put(c, t);  
  14.             }  
  15.             children = t.children;  
  16.             if(i==word.length()-1) t.leaf=true;  
  17.         }  
  18.     }  
  19.   
  20.     public boolean search(String word) {  
  21.         return searchNode(word, root);  
  22.     }  
  23.       
  24.     public boolean searchNode(String word, TrieNode tn) {  
  25.         if(tn==null) return false;  
  26.         if(word.length() == 0 ) return tn.leaf;  
  27.           
  28.         Map<Character, TrieNode> children = tn.children;  
  29.         TrieNode t = null;  
  30.         char c = word.charAt(0);  
  31.         if(c==‘.‘) {  
  32.             for(char key : children.keySet() ) {  
  33.                 if(searchNode(word.substring(1), children.get(key) )) return true;  
  34.             }  
  35.             return false;  
  36.         } else if(!children.containsKey(c)) {  
  37.             return false;  
  38.         } else {  
  39.             t = children.get(c);  
  40.             return searchNode(word.substring(1), t);  
  41.         }  
  42.     }      
  43. }  
  44.   
  45. class TrieNode {  
  46.     // Initialize your data structure here.  
  47.     char c;  
  48.     boolean leaf;  
  49.     HashMap<Character, TrieNode> children = new HashMap<Character, TrieNode>();  
  50.       
  51.     public TrieNode(char c) {  
  52.         this.c = c;  
  53.     }  
  54.           
  55.     public TrieNode(){};  
  56. }  

字典树搜索LINTCODE 题目Add and Search Word

标签:

原文地址:http://www.cnblogs.com/zhaoprence/p/4999403.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!