ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码

Implement Trie Prefix Tree

来源:网络整理     时间:2016-06-03     关键词:implement,prefix

本篇文章主要介绍了"Implement Trie Prefix Tree",主要涉及到implement,prefix方面的内容,对于其他编程jrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下: 题目链接:https://leetcode.com/problems/implement-trie-prefix-tree/题目:Implement a tri...

题目链接:https://leetcode.com/problems/implement-trie-prefix-tree/
题目:

Implement a trie with insertsearch, and startsWith methods.

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

思路:

每个结点包括三个属性:结点代表的字符、指向儿子结点的指针、代表该结点是否是word。最后一个属性是因为word不一定是从根到叶结点的路径。比如insert("abc")、insert("ab"),search("ab")应该返回true。因为之前插入了ab,哪怕b不是叶结点,所以结点要有一个属性表示从root到该是否为word。

算法:

[java] view plain copy implement,java implement,implemente,not implement,specific implement,implement和extend,implementate,php implement,implement 翻implement,java implement,implemente,not implement,specific implement,implement和extend,implementate,php implement,implement 翻

  1. import java.util.HashMap;  
  2.   
  3. class TrieNode {  
  4.     // Initialize your data structure here.  
  5.     String val = "";  
  6.     HashMap nexts = new HashMap();  
  7.     boolean isword = false;  
  8.     public TrieNode() {  
  9.     }  
  10. }  
  11.   
  12. public class Trie {  
  13.     private TrieNode root;  
  14.   
  15.     public Trie() {  
  16.         root = new TrieNode();  
  17.     }  
  18.   
  19.     // Inserts a word into the trie.  
  20.     public void insert(String word) {  
  21.         TrieNode p = root;  
  22.         for (int i = 0; i < word.length(); i++) {  
  23.             String key = word.charAt(i) + "";  
  24.             if (p.nexts.containsKey(key)) {  
  25.                 p = p.nexts.get(key);  
  26.             } else {  
  27.                 TrieNode t = new TrieNode();  
  28.                 t.val = key;  
  29.                 p.nexts.put(key, t);  
  30.                 p = t;  
  31.             }  
  32.             if(i==word.length()-1){  
  33.                 p.isword = true;  
  34.             }  
  35.         }  
  36.         System.out.println(p.val+":"+p.isword);  
  37.     }  
  38.   
  39.     // Returns if the word is in the trie.  
  40.     public boolean search(String word) {  
  41.         TrieNode p = root;  
  42.         for (int i = 0; i < word.length(); i++) {  
  43.             String key = word.charAt(i) + "";  
  44.             if (p.nexts.containsKey(key)) {  
  45.                 p = p.nexts.get(key);  
  46.             } else {  
  47.                 return false;  
  48.             }  
  49.         }  
  50.         if (p.nexts.size() == 0)  
  51.             return true;  
  52.         else if(!p.isword)  
  53.             return false;  
  54.         else  
  55.             return true;  
  56.     }  
  57.   
  58.     // Returns if there is any word in the trie  
  59.     // that starts with the given prefix.  
  60.     public boolean startsWith(String prefix) {  
  61.         TrieNode p = root;  
  62.         for (int i = 0; i < prefix.length(); i++) {  
  63.             String key = prefix.charAt(i) + "";  
  64.             if (p.nexts.containsKey(key)) {  
  65.                 p = p.nexts.get(key);  
  66.             } else {  
  67.                 return false;  
  68.             }  
  69.         }  
  70.         return true;  
  71.     }  
  72. }  

以上就介绍了Implement Trie Prefix Tree,包括了implement,prefix方面的内容,希望对其他编程jrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播有兴趣的朋友有所帮助。

本文网址链接:http://www.codes51.com/article/detail_1470219.html

相关图片

相关文章