zoukankan      html  css  js  c++  java
  • Leetcode 208.实现前缀树

    实现前缀树

    实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作。

    示例:

    Trie trie = new Trie();

    trie.insert("apple");

    trie.search("apple"); // 返回 true

    trie.search("app"); // 返回 false

    trie.startsWith("app"); // 返回 true

    trie.insert("app");

    trie.search("app"); // 返回 true

    说明:

    • 你可以假设所有的输入都是由小写字母 a-z 构成的。
    • 保证所有输入均为非空字符串。
     1 dclass TrieNode{
     2         char c;
     3         boolean leaf;
     4         HashMap<Character,TrieNode> children=new HashMap<Character,TrieNode>();
     5 public TrieNode(char c){
     6         this.c=c;
     7         }
     8 public TrieNode(){};
     9         }
    10 
    11 public class Trie{
    12     private TrieNode root;
    13     public Trie(){
    14         root=new TrieNode();
    15     }
    16 
    17     public void insert(String word){
    18         Map<Character,TrieNode> children=root.children;
    19         for(int i=0;i<word.length();i++){
    20             char c=word.charAt(i);
    21             TrieNode t;
    22             if(children.containsKey(c)){
    23                 t=children.get(c);
    24             }else{
    25                 t=new TrieNode(c);
    26                 children.put(c,t);
    27             }
    28             children=t.children;
    29             if(i==word.length()-1)
    30                 t.leaf=true;
    31         }
    32     }
    33 
    34     public boolean search(String word){
    35         TrieNode t=searchNode(word);
    36         return t!=null && t.leaf;
    37     }
    38 
    39     private TrieNode searchNode(String word){
    40         Map<Character,TrieNode> children=root.children;
    41         TrieNode t=null;
    42         for(int i=0;i<word.length();i++){
    43             char c=word.charAt(i);
    44             if(!children.containsKey(c)) return null;
    45             t=children.get(c);
    46             children=t.children;
    47         }
    48         return t;
    49     }
    50 
    51     public boolean startsWith(String prefix){
    52         return searchNode(prefix)!=null;
    53     }
    54 }
  • 相关阅读:
    过滤器实例——字符编码Filter
    pcap文件格式分析
    jsp常见获取地址函数之间的不同
    将抓到的pcap文件中Http包转换为可读的txt格式
    DBA入门之Oracle数据库参数文件
    查询session status各项统计数据的前三名
    查询正在做的排序操作
    DBUtils的handler
    DBA入门之认识检查点(Checkpoint)
    show_space_by_tom
  • 原文地址:https://www.cnblogs.com/kexinxin/p/10203025.html
Copyright © 2011-2022 走看看