来 看 T r i e 吧
来 看 T r i e 吧
Trie 念做 try,就是字典树。
是一种主要用于字符串快速检索的多叉树结构
可以做什么呢,比如你输入了一大堆已有的字符串,可以很快判断一个新的给定的字符串是否在已有的字符串里出现过
const SIZE = 1e4+5;
bool end[SIZE]
int tire[SIZE][26], tot = 1; //假设只有小写字母 void insert(char s[]){int L = (int)strlen(s),p = 1;for(int k=0;k<L;k++){int ch = s[k] - 'a';if(tire[p][ch] == 0) trie[p][ch] = ++tot; // tire[p][ch] == 0 表示没有出现过这个字符串// 对于一个确定的字符串前缀,有唯一对应的数字tot,若没有出现这样的前缀,那么++totp = trie[p][ch];}end[p] = 1;//标记下这个字符串的结尾
}bool search(char s[]){int L = (int)strlen(s),p=1;for(int k=0;k<L;k++){p = trie[p][s[k] - 'a'];if(p == 0) return false; }return end[p];
}
我觉得嘛,
首先, 数字 p 有对应的唯一字符串
那么,这个 trie[p][ch]
可以理解成:
以p为前缀的字符串,加上ch以后的对应的数字。
所以就很好理解了嘛
insert
的时候,如果不存在这样的p,那么就立刻++tot,这时p就存在了。
search
的时候,如果不存在这样的p,那么就是找不到,返回false。
这个字典树有什么用呢?
比如说,可以根据前缀预测出后面可能的字符,因为对于一个p来说,他可能的后缀是可以找到的。像什么 搜索 就可以通过这种方式建立索引。
来 看 T r i e 吧相关推荐
- R语言学习笔记-机器学习1-3章
在折腾完爬虫还有一些感兴趣的内容后,我最近在看用R语言进行简单机器学习的知识,主要参考了<机器学习-实用案例解析>这本书. 这本书是目前市面少有的,纯粹以R语言为基础讲解的机器学习知识,书 ...
- UA MATH571A R语言回归分析实践 一元回归1 NBA球员的工资
UA MATH571A R语言回归分析实践 一元回归1 NBA球员的工资 基础回归分析 571A另一个系列的文章介绍了回归分析的理论,这个系列的文章介绍R语言做回归分析的实践,但不会涉及R语言编程,只 ...
- python做数据分析难么_做统计学习,数据分析应该学Python还是R?
如果你是数据分析领域的新兵,那么你一定很难抉择--在进行数据分析时,到底应该使用哪个语言,R还是Python?在网络上,也经常出现诸如"我想学习机器语言,我应该用哪个编程语言"或者 ...
- R语言forestmodel包使用教程
看下R包介绍,这个包可以基于回归模型的结果绘制森林图,这个回归结果包括逻辑回归和Cox回归模型. 下面来学习下这个包. 1. 安装和加载R包 安装R包可以直接从CRAN上安装. install.pac ...
- R︱并行计算以及提高运算效率的方式(parallel包、clusterExport函数、SupR包简介)
要学的东西太多,无笔记不能学~~ 欢迎关注公众号,一起分享学习笔记,记录每一颗"贝壳"~ --------------------------- 终于开始攻克并行这一块了,有点小兴 ...
- R语言︱ 数据库SQL-R连接与SQL语句执行(RODBC、sqldf包)
要学的东西太多,无笔记不能学~~ 欢迎关注公众号,一起分享学习笔记,记录每一颗"贝壳"~ --------------------------- 数据库是极其重要的R语言数据导入源 ...
- R语言入门——常用函数50个
R语言函数入门50个基本函数 0引言 1.入门准备操作及函数 1.1R版本介绍以及IDE的选择 1.2IDE及其常用的快捷键 2.空间操作以及纠错函数 2.1 ? .??.help.demo.exam ...
- Python与R的区别与联系
中文原文:数据科学界华山论剑:R与Python巅峰对决 英文原文:Choosing R or Python for data analysis? An infographic 如果你是数据分析领域的新 ...
- R语言基础之第六部分 分类(史上最全含ddply、aggregate、split、by)
R语言基础之第六部分 分类(史上最全含ddply.aggregate.split.by) 数据: 某市2014年-2018年空气质量指数日数据,需要按年分类计算每年 warm值为1和 0的均值. 数据 ...
- [R] R语言for循环机制
在做数据分段截取的时候,发现for循环的表现和其他语言不太一样. 上代码: for( i in 1:4) {i = i + 1print(i) } 结果: [1] 2 [1] 3 [1] 4 [1] ...
最新文章
- 如果现在只能用汇编和 Goto 编程......
- 做有挑战的事情就行了~
- MySQL 使用 OR 条件导致索引失效
- C#微信公众号开发系列教程三(消息体签名及加解密)
- hadoop遇到的问题及处理
- ansys怎么建立弯曲圆柱_螺栓连接模型的建立方法解析
- (二)使用预定义模型 QStringListModel例子
- 区块链,到底是美好未来还是题材炒作?
- of python检索文献 science web_查SCI文献,不知道检索方法怎么行!
- Chrome忽略网站证书错误
- 土木工程结构力学————钢架的位移法
- 电子器件——钽电容的简介
- oracle备份数据脚本,oracle数据库自动备份脚本
- 【工作技能】如何制作有效的简历
- SpringMVC学习系列(6) 之 数据验证
- 知乎高赞:什么能力很重要,但大多数人都没有?
- 遗传算法五大基本要素——参数编码、群体设定
- 【三角函数】常用的三角函数相关知识
- 文件传输服务(FTP)
- 基于SnowNLP的商品评论文本情感分析
热门文章
- 2021年高压电工考试技巧及高压电工模拟考试
- 文章瞎读 TOLDI: An effective and robust approach for 3D local shape description 2016
- A Game of Thrones(99)
- sqlite3_exec返回SQLITE_MISUSE(21)
- 沟通的艺术与处世智慧 ——戴尔卡耐基(笔记)
- Android 实现adb手机投屏
- 单片机延时问题20问
- 查看微信好友男女比例
- ddd linux 调试工具_linux-c/c++调试利器gdb、ddd小试
- [ XJTUSE ]JAVA语言基础知识——7.11 JTree、TreeModel实现树