zoukankan      html  css  js  c++  java
  • 208. Implement Trie (Prefix Tree)

    /*
     * 208. Implement Trie (Prefix Tree) 
     * 2016-6-9 by Mingyang
     * 我在这里的时候用的hashmap来做的地图,这里用的是array,一样的原理
     * 不过我没有想到的是需要一个isEnd的property,因为这里的search必须找到end的时候才是成功的找到
     */
    class Tries {
        public TrieNode root;
        public Tries() {
            root = new TrieNode();
            root.isEnd = true;
        }
        public void insert(String word) {
            if (word == null || word.length() == 0)
                return;
            TrieNode node = root;
            char[] letters = word.toCharArray();
            for (int i = 0; i < word.length(); i++) {
                int pos = letters[i] - 'a';
                if (node.son[pos] == null) {
                    node.son[pos] = new TrieNode();
                    node.son[pos].val = letters[i];
                }
                node = node.son[pos];
            }
            node.isEnd = true;
        }
        // Returns if the word is in the trie.
        public boolean search(String word) {
            if (word == null || word.length() == 0) {
                return false;
            }
            TrieNode node = root;
            char[] letters = word.toCharArray();
            for (int i = 0; i < word.length(); i++) {
                int pos = letters[i] - 'a';
                if (node.son[pos] != null) {
                    node = node.son[pos];
                } else {
                    return false;
                }
            }
            return node.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 node = root;
            char[] letters = prefix.toCharArray();
            for (int i = 0; i < prefix.length(); i++) {
                int pos = letters[i] - 'a';
                if (node.son[pos] != null) {
                    node = node.son[pos];
                } else {
                    return false;
                }
            }
            return true;
        }
    }
    class TrieNode {
        // Initialize your data structure here.
        TrieNode[] son;// 所有的儿子节点
        boolean isEnd;// 是不是最后一个节点
        char val;// 节点的值
        TrieNode() {
            this.son = new TrieNode[26];
            this.isEnd = false;
        }
    }
  • 相关阅读:
    MATLAB读取文件——从非常规文本文件中读取数据
    注意——CAN通信设备控制
    硬件——USB传输速度和物理接口
    STM32F4-浮点DSP库的MDK开发环境的设置
    CRC校验
    蓝牙串口使用心得
    Mysql 层级、执行顺序、执行计划分析
    讲一讲垃圾回收算法
    【转】Java中的新生代、老年代、永久代和各种GC
    工具链接
  • 原文地址:https://www.cnblogs.com/zmyvszk/p/5573285.html
Copyright © 2011-2022 走看看