数据结构--Trie字符串统计

1、“Trie树” 作用:

  • 高效地存储和查找字符串集合的数据结构。

2、“Trie树” 存储字符串的形式如下:

在这里插入图片描述

  1. 用 “0” 来表示 “根节点(root)”。
  2. 存入一个字符串时,会在字符串最后结尾的那个字符节点打上标记。比如:字符串 “abcd” 是以字符 “d” 结尾的,那么就在字符节点 “d” 打上标记。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

具体例子理解

左边数组初始全是0
添加字符串`”abc“,

  1. 首先``p = 0`
    p 指的是当前所遍历到的节点
    index 指的是最后一个可用的节点
  2. 依次获取每个字符(首先获取字符'a')映射的数字(0~25)
    在这里插入图片描述
  3. 由于当前节点,并没有'a'这个节点指向的节点, 我们就需要新建一个节点,然后我们把 ++idx 填写到这个节点上,第一次是1
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    AcWing 835. Trie字符串统计
#include <iostream>using namespace std;const int N = 100010;int son[N][26], cnt[N], idx;
char str[N];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];
}int main()
{int n;scanf("%d", &n);while(n --){char op[2];scanf("%s%s", op, str);if(op[0] == 'I') insert(str);else printf("%d\n", query(str));}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/149873.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Python柱形图

柱形图 柱形图&#xff0c;又称长条图、柱状统计图、条图、条状图、棒形图&#xff0c;是一种以长方形的长度为变量的统计图表。长条图用来比较两个或以上的价值&#xff08;不同时间或者不同条件&#xff09;&#xff0c;只有一个变量&#xff0c;通常利用于较小的数据集分析…

投资理财:利率下行时代应该怎样存钱?

大家好&#xff0c;我是财富智星&#xff0c;今天跟大家分享一下当下利率下行的时代&#xff0c;钱应该怎样存&#xff0c;存哪里的问题。 一、 银行利率下行 在过去的三十年里&#xff0c;您已经逐渐适应了不断下降的利率&#xff0c;从10%到现在的1.65%。而在未来&#xff0c…

迄今为止丨ChatGPT最强指令,一个可以让机器人生成机器人的Prompt,价值百万!

原文&#xff1a; 【ChatGPT调教】ChatGPT最强指令、让机器人为你生成机器人&#xff01;-CSDN博客 说明&#xff1a;最好看原文 昨天&#xff0c;发现了一条可能是迄今为止&#xff0c;我见过最牛的&#xff0c;商业价值最高的ChatGPT指令。 通过这条指令&#xff0c;可以…

1400*C. Soldier and Cards(贪心模拟)

Problem - 546C - Codeforces Soldier and Cards - 洛谷 解析&#xff1a; 模拟即可&#xff0c;当循环次数过大的时候跳出循环打印 -1 #include<bits/stdc.h> using namespace std; #define int long long const int N2e55; int n,x,k1,k2,cnt; queue<int>a,b;…

[黑马程序员TypeScript笔记]------一篇就够了

目录&#xff1a; TypeScript 介绍 TypeScript 是什么&#xff1f;TypeScript 为什么要为 JS 添加类型支持&#xff1f;TypeScript 相比 JS 的优势TypeScript 初体验 安装编译 TS 的工具包 编译并运行 TS 代码 简化运行 TS 的步骤 TypeScript 常用类型 概述类型注解常用基础…

MATLAB算法实战应用案例精讲-【优化算法】沙丁鱼优化算法(SOA)(附MATLAB代码实现)

前言 沙丁鱼优化算法(Sardine optimization algorithm,SOA)由Zhang HongGuang等人于2023年提出,该算法模拟沙丁鱼的生存策略,具有搜索能力强,求解精度高等特点。 沙丁鱼主要以浮游生物为食,这些生物包括细菌、腔肠动物、软体动物、原生动物、十足目、幼小藤壶、鱼卵、甲藻…

LeetCode 面试题 08.02. 迷路的机器人

文章目录 一、题目二、C# 题解 一、题目 设想有个机器人坐在一个网格的左上角&#xff0c;网格 r 行 c 列。机器人只能向下或向右移动&#xff0c;但不能走到一些被禁止的网格&#xff08;有障碍物&#xff09;。设计一种算法&#xff0c;寻找机器人从左上角移动到右下角的路径…

【C++设计模式之建造者模式:创建型】分析及示例

简介 建造者模式&#xff08;Builder Pattern&#xff09;是一种创建型设计模式&#xff0c;它将复杂对象的构建过程与其表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。 描述 建造者模式通过将一个复杂对象的构建过程拆分成多个简单的部分&#xff0c;并由不同…

OpenGLES:绘制一个混色旋转的3D圆柱

效果展示 本篇博文会实现两种混色效果的3D圆柱&#xff1a; 一.圆柱体解析 上一篇博文讲解了怎么绘制一个混色旋转的立方体 这一篇讲解怎么绘制一个混色旋转的圆柱 圆柱的顶点创建主要基于2D圆进行扩展&#xff0c;与立方体没有相似之处 圆柱绘制的关键点就是将圆柱拆解成…

【TensorFlow Hub】:有 100 个预训练模型等你用

要访问TensorFlow Hub&#xff0c;请单击此处 — https://www.tensorflow.org/hub 一、说明 TensorFlow Hub是一个库&#xff0c;用于在TensorFlow中发布&#xff0c;发现和使用可重用模型。它提供了一种使用预训练模型执行各种任务&#xff08;如图像分类、文本分析等&#xf…

Docker 配置基础优化

Author&#xff1a;rab 为什么要优化&#xff1f; 你有没有发现&#xff0c;Docker 作为线上环境使用时&#xff0c;Docker 日志驱动程序的日志、存储驱动数据都比较大&#xff08;尤其是在你容器需要增删比较频繁的时候&#xff09;&#xff0c;动不动就好几百 G 的大小&…

节日灯饰灯串灯出口欧洲CE认证办理

灯串&#xff08;灯带&#xff09;&#xff0c;这个产品的形状就象一根带子一样&#xff0c;再加上产品的主要原件就是LED&#xff0c;因此叫做灯串或者灯带。2022年&#xff0c;我国灯具及相关配件产品出口总额超过460亿美元。其中北美是最大的出口市场。其次是欧洲市场&#…

【STM32 LVGL基础教程】初识LVGL

文章目录 前言一、什么是LVGL&#xff1f;二、LVGL的诞生历程三、LVGL的用途四、模拟器使用LVGL4.1 下载codeblocks并运行模拟器lvgl4.2 更改lvgl设置更改帧数更改颜色深度 五、STM32使用LVGL总结 前言 嵌入式系统中的图形用户界面&#xff08;GUI&#xff09;已经成为现代设备…

基于goravel的CMS,企业官网通用golang后台管理系统

2023年9月11日10:47:00 仓库地址&#xff1a; https://gitee.com/open-php/zx-goravel-website 框架介绍 Goravel SCUI 后端开发组件 go 1.20 Goravel 1.13 数据库 sql(使用最新日期文件) goravel\doc\sql_bak mysql 8.0 前端开发组件 scui 1.6.9 node v14.21.3 效果图…

基于自私羊群优化的BP神经网络(分类应用) - 附代码

基于自私羊群优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于自私羊群优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.自私羊群优化BP神经网络3.1 BP神经网络参数设置3.2 自私羊群算法应用 4.测试结果…

uni-app实现图片预览

uni.previewImage预览图片 使用方法&#xff1a; <image class"poster" :src"imageUrl" mode"" click"previewImg(imageUrl)"></image>const previewImg (e) > {uni.previewImage({current: e,urls: image}); } 官…

vulnhub靶机doubletrouble

下载地址&#xff1a;doubletrouble: 1 ~ VulnHub 主机发现 arp-scan -l 端口扫描 nmap --min-rate 1000 -p- 192.168.21.151 端口服务扫描 nmap -sV -sT -O -p22,80 192.168.21.151 漏洞扫描 nmap --scriptvuln -p22,80 192.168.21.151 先去看看web页面 这里使用的是qdpm …

提升您的 Go 应用性能的 6 种方法

优化您的 Go 应用程序 1. 如果您的应用程序在 Kubernetes 中运行&#xff0c;请自动设置 GOMAXPROCS 以匹配 Linux 容器的 CPU 配额 Go 调度器 可以具有与运行设备的核心数量一样多的线程。由于我们的应用程序在 Kubernetes 环境中的节点上运行&#xff0c;当我们的 Go 应用程…

探秘布隆过滤器:高效数据查找与去重利器

探秘布隆过滤器&#xff1a;高效数据查找与去重利器 引言 在现代计算机科学中&#xff0c;数据的查找与去重是一个至关重要的问题。本文将介绍一种高效的数据结构——布隆过滤器&#xff0c;它能够在海量数据中快速判断某个元素是否存在&#xff0c;同时具有出色的空间效率。…

【数据恢复篇】浅谈FTK Imager数据恢复功能

【数据恢复篇】浅谈FTK Imager数据恢复功能 日常取证工作中&#xff0c;常用FTK Imager制作磁盘镜像、挂载镜像等&#xff0c;但FTK Imager的数据恢复功能也是非常强大的&#xff0c;某些数据的恢复效果不输专业的数据恢复软件&#xff0c;甚至略胜一筹—【蘇小沐】 文章目录 …