当前位置: 首页 > news >正文

Trie树算法

Trie树,也称为前缀树或字典树,是一种特殊的树型数据结构。它用于存储一组字符串,使得查找、插入和删除字符串的操作非常高效。类似这种,

模板:

这是用数组来模拟上图中的树的结构,逻辑上和上图结构一致。

大家一定要手动看代码模拟一边,只靠想象不光浪费时间还想不明白。

int son[N][26], cnt[N], idx;
// 0号点既是根节点,又是空节点,这里0号点指的是idx
// son[][]存储树中每个节点的子节点
// cnt[]存储以每个节点结尾的单词数量

// 插入一个字符串
void insert(char *str)
{
    int p = 0;
    for (int i = 0; str[i]; i ++ )
    {
        int u = str[i] - 'a';
        if (!son[p][u]) son[p][u] = ++ idx;
        p = son[p][u];
    }
    cnt[p] ++ ;
}

// 查询字符串出现的次数
int query(char *str)
{
    int p = 0;
    for (int i = 0; str[i]; i ++ )
    {
        int u = str[i] - 'a';
        if (!son[p][u]) return 0;
        p = son[p][u];
    }
    return cnt[p];
}

http://www.lryc.cn/news/519338.html

相关文章:

  • NLTK分词以及处理方法
  • vue3树形组件+封装+应用
  • kotlin项目无法访问Java类的问题
  • 计算机网络 (30)多协议标签交换MPLS
  • qt-C++笔记之自定义继承类初始化时涉及到parents的初始化
  • 人才选拔中,如何优化面试流程
  • 2501wtl,皮肤技术
  • 【面试题】技术场景 6、Java 生产环境 bug 排查
  • word论文排版常见问题汇总
  • 传奇3仿韩服单机版安装教程+GM管理面板
  • 第26章 汇编语言--- 内核态与用户态
  • Spring bean的生命周期和扩展
  • 计算机网络 (33)传输控制协议TCP概述
  • Python3 JSON
  • Leetcode 698 Partition to K Equal Sum Subsets
  • 可靠的人形探测,未完待续(III)
  • Git文件夹提交错了,怎么撤销?
  • 小程序textarea组件键盘弹起会遮挡住输入框
  • Android车机DIY开发之学习篇(二)编译Kernel以正点原子为例
  • qt 窗口(window/widget)绘制/渲染顺序 QPainter QPaintDevice Qpainter渲染 失效 无效
  • Ubuntu下载时不显示无线网图标并显示Cable unplugged
  • 微信小程序实现人脸识别登录
  • atoi函数的概念和使用案例
  • Mysql--运维篇--日志管理(连接层,SQL层,存储引擎层,文件存储层)
  • poi处理多选框进行勾选操作下载word以及多word文件压缩
  • QT 键值对集合QMap
  • NetMQ里Push-Pull模式,消息隔一收一问题小记
  • 见微知著:Tripo 开创 3D 生成新时代
  • 消息队列与中间件:Java的秘密传输带
  • Bytebase 3.1.0 - 通过 Google / GitHub SSO 功能开放给专业版