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

    package LeetCode_208
    
    /**
     * 208. Implement Trie (Prefix Tree)
     * https://leetcode.com/problems/implement-trie-prefix-tree/description/
     * */
    
    class Trie() {
    
        private var root: TireNode? = null
    
        class TireNode {
            var children = arrayOfNulls<TireNode>(26)
            var isWord = false
        }
    
        /** Initialize your data structure here. */
        init {
            root = TireNode()
            println(root?.children?.size)
        }
    
        /** Inserts a word into the trie. */
        fun insert(word: String) {
            var p = root
            for (c in word) {
                val index = c.toInt() - 'a'.toInt()
    
                if (p?.children?.get(index) == null) {
                    p?.children?.set(index, TireNode())
                }
                p = p?.children?.get(index)
            }
            p?.isWord = true
        }
    
        /** Returns if the word is in the trie. */
        fun search(word: String): Boolean {
            val node = find(word)
            return node != null && node?.isWord
        }
    
        /** Returns if there is any word in the trie that starts with the given prefix. */
        fun startsWith(prefix: String): Boolean {
            val node = find(prefix)
            return node != null
        }
    
        private fun find(prefix: String): TireNode? {
            var p = root
            for (c in prefix) {
                val index = c.toInt() - 'a'.toInt()
                if (p?.children?.get(index) == null) {
                    return null
                }
                p = p?.children?.get(index)
            }
            return p
        }
    }
    
    /**
     * Your Trie object will be instantiated and called as such:
     * var obj = Trie()
     * obj.insert(word)
     * var param_2 = obj.search(word)
     * var param_3 = obj.startsWith(prefix)
     */
  • 相关阅读:
    bzoj4282 慎二的随机数列
    bzoj2839 集合计数
    bzoj1735 [Usaco2005 jan]Muddy Fields 泥泞的牧场
    bzoj3732 Network
    Kruskal重构树
    bzoj1568 [JSOI2008]Blue Mary开公司
    bzoj4576 [Usaco2016 Open]262144
    p2522 [HAOI2011]Problem b
    bzoj2463 谁能赢呢
    p4301 [CQOI2013]新Nim游戏
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/12853498.html
Copyright © 2011-2022 走看看