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

acwing算法基础之数据结构--trie算法

目录

  • 1 基础知识
  • 2 模板
  • 3 工程化

1 基础知识

trie树算法,也叫作字典树算法。
用处:用来高效存储和查找字符串集合的数据结构。

(一)
定义变量。

const int N = 1e5 +10;
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]++;return;
}

(三)
查询操作。

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];
}

2 模板

const int N = 1e5 + 10;
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]++;return;
}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];
}

3 工程化

class Trie {
public:Trie(int n) {this->n = n;son.resize(n, vector<int>(26, 0));cnt.resize(n, 0);idx = 0; //注意0表示根结点,也表示空结点。}Trie(int n, int m) {this->n = n;this->m = m;son.resize(n, vector<int>(m, 0));cnt.resize(n, 0);idx = 0; //注意0表示根结点,也表示空结点。}void insert(string str) {int p = 0;for (int i = 0; i < str.size(); ++i) {int u = str[i] - 'a';if (!son[p][u]) son[p][u] = ++idx;p = son[p][u];}cnt[p]++;return;}int query(string str) {int p = 0;for (int i = 0; i < str.size(); ++i) {int u = str[i] - 'a';if (!son[p][u]) return 0;p = son[p][u];}return cnt[p];}
private:int n;int m;int idx;vector<vector<int>> son;vector<int> cnt;
};
http://www.lryc.cn/news/218403.html

相关文章:

  • ES from+size>10000报错
  • (04)Mycat实现分库
  • DeepSORT多目标跟踪——算法流程与源码解析
  • C++查漏补缺与新标准(C++20,C++17,C++11)02 C++快速回顾(二)
  • 红米K40功能介绍
  • 壹[1],Opencv常用结构
  • Linux常用指令(一)——目录操作
  • 前端基础之jQuery
  • 【基于HTML5的网页设计及应用】——实现个人简历表格和伪类选择器应用
  • 思考(九十二):DBProxy实现多级存储和事务处理
  • 新手入门Python一定要看的八个超实用建议!
  • Centos 7.x上利用certbot申请Let‘s Encrypt的SSH证书(HTTPS证书)
  • 采用springboot、avue框架开发的:大型医院绩效考核系统成品源码
  • 时序分解 | Matlab实现FEEMD快速集合经验模态分解时间序列信号分解
  • 自学SLAM(6)相机与图像实践:OpenCV处理图像与图像拼接(点云)
  • 伊朗网络间谍组织针对中东金融和政府部门
  • 基于51单片机土壤湿度检测及自动浇花系统仿真(带时间显示)
  • typeScript基础使用与进阶
  • 云智慧联合北航提出智能运维(AIOps)大语言模型及评测基准
  • 高效处理异常值的算法:One-class SVM模型的自动化方案
  • Docker DeskTop安装与启动(Windows版本)
  • 数据结构:邻接矩阵与邻接表
  • python PyQt5 MySQL GUI 学生信息管理系统
  • [SSD综述1.6] SSD固态硬盘参数图文解析_选购固态硬盘就像买衣服?
  • 【计算机网络 - 自顶向下方法】第一章习题答案
  • 零基础搭建Nextcloud私有云盘并通过内网穿透实现远程访问
  • element ui多选框编辑时无法选中的解决办法
  • Android Studio布局
  • 2.10 CSS BFC
  • iSlide2024一款基于PPT的插件工具包含38个设计辅助功能