// trie 字典树实现
package Algorithm // 字典树节点
type TrieNode struct {
children map[interface{}]*TrieNode
isEnd bool
} // 构造字典树节点
func newTrieNode() *TrieNode {
return &TrieNode{children: make(map[interface{}]*TrieNode), isEnd: false}
} // 字典树
type Trie struct {
root *TrieNode
} // 构造字典树
func NewTrie() *Trie {
return &Trie{root: newTrieNode()}
} // 向字典树中插入一个单词
func (trie *Trie) Insert(word []interface{}) {
node := trie.root
for i := ; i < len(word); i++ {
_, ok := node.children[word[i]]
if !ok {
node.children[word[i]] = newTrieNode()
}
node = node.children[word[i]]
}
node.isEnd = true
} // 搜索字典树中是否存在指定单词
func (trie *Trie) Search(word []interface{}) bool {
node := trie.root
for i := ; i < len(word); i++ {
_, ok := node.children[word[i]]
if !ok {
return false
}
node = node.children[word[i]]
}
return node.isEnd
} // 判断字典树中是否有指定前缀的单词
func (trie *Trie) StartsWith(prefix []interface{}) bool {
node := trie.root
for i := ; i < len(prefix); i++ {
_, ok := node.children[prefix[i]]
if !ok {
return false
}
node = node.children[prefix[i]]
}
return true
}

github链接地址:https://github.com/gaopeng527/go_Algorithm/blob/master/trie.go

Go语言字典树定义及实现的更多相关文章

  1. [HNOI2004]L语言 字典树 记忆化搜索

    [HNOI2004]L语言 字典树 记忆化搜索 给出\(n\)个字符串作为字典,询问\(m\)个字符串,求每个字符串最远能匹配(字典中的字符串)到的位置 容易想到使用字典树维护字典,然后又发现不能每步 ...

  2. 洛谷-P2292-L语言(字典树)

    链接: https://www.luogu.org/problem/P2292 题意: 标点符号的出现晚于文字的出现,所以以前的语言都是没有标点的.现在你要处理的就是一段没有标点的文章. 一段文章T是 ...

  3. hdu 1251:统计难题(字典树,经典题)

    统计难题 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131070/65535 K (Java/Others)Total Submi ...

  4. BZOJ 1212 L语言(DP+字典树)

    求能被理解的最长前缀. 很显然的dp.令dp[i]=true,表示前缀i能理解.否则不能理解.那么dp[i+len]=dp[i]=true,当s[len]能匹配str[i,i+len]. 由于模式串长 ...

  5. Trie(字典树)解析及其在编程竞赛中的典型应用举例

    摘要: 本文主要讲解了Trie的基本思想和原理,实现了几种常见的Trie构造方法,着重讲解Trie在编程竞赛中的一些典型应用. 什么是Trie? 如何构建一个Trie? Trie在编程竞赛中的典型应用 ...

  6. 初级字典树查找在 Emoji、关键字检索上的运用 Part-2

    系列索引 Unicode 与 Emoji 字典树 TrieTree 与性能测试 生产实践 在有了 Unicode 和 Emoji 的知识准备后,本文进入编码环节. 我们知道 Emoji 是 Unico ...

  7. Tire树(字典树)

    from:https://www.cnblogs.com/justinh/p/7716421.html Trie,又经常叫前缀树,字典树等等.它有很多变种,如后缀树,Radix Tree/Trie,P ...

  8. 浅谈字典树Trie

    \(\;\) 本文是作者学习<算法竞赛进阶指南>的所得,有些语言是摘自其中. \(\;\) 基础知识 定义 \(\;\) 字典树(Trie):是一种支持字符串查询的多叉树结构.其中的每个节 ...

  9. [LeetCode] Implement Trie (Prefix Tree) 实现字典树(前缀树)

    Implement a trie with insert, search, and startsWith methods. Note:You may assume that all inputs ar ...

随机推荐

  1. centos环境gcc版本升级

    今天项目需要做node.js项目的性能测试,通过在centos上搭建nodejs环境 安装过程中提示:

  2. Flink--Table和DataStream和DataSet的集成

    将DataStream或DataSet转换为表格 在上面的例子讲解中,直接使用的是:registerTableSource注册表 对于flink来说,还有更灵活的方式:比如直接注册DataStream ...

  3. BZOJ1911 [Apio2010]特别行动队 - 动态规划 - 斜率优化

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 UPD(2018-04-01):用Latex重打了公式…… 题意概括 把一个整数序列划分成任意连续的段,使得划分出 ...

  4. P1378 油滴扩展 dfs回溯法

    题目描述 在一个长方形框子里,最多有N(0≤N≤6)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界.必须等一个油滴扩展完毕才能放置下一个油滴. ...

  5. 047 SparkSQL自定义UDF函数

    一:程序部分 1.需求 Double数据类型格式化,可以给定小数点位数 2.程序 package com.scala.it import org.apache.spark.{SparkConf, Sp ...

  6. 爬虫3 requests基础

    import requests # get实例 # res = requests.get('http://httpbin.org/get') # # res.encoding='utf-8' # pr ...

  7. html-form

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. ATcoder Big Array

    Problem Statement There is an empty array. The following N operations will be performed to insert in ...

  9. java8 Stream的实现原理 (从零开始实现一个stream流)

    1.Stream 流的介绍 1.1 java8 stream介绍 java8新增了stream流的特性,能够让用户以函数式的方式.更为简单的操纵集合等数据结构,并实现了用户无感知的并行计算. 1.2  ...

  10. lvs负载均衡概述