当前位置:   article > 正文

【数据结构与算法】【字符串匹配】Trie树_trie实现字符串蛮力匹配

trie实现字符串蛮力匹配
  1. 单模式串匹配
    BF 算法和 RK 算法
    BM 算法和 KMP 算法
  2. 多模式串匹配算法
    Trie 树和 AC 自动机

一、 什么是“Trie树”?

1. 他是一种树形结构,是一种专门处理字符串匹配的数据结构,解决在一组字符串集合中快速查找某个字符串的问题。
2. Trie树的本质是利用字符串之间公共前缀,将重复的前缀合并在一起

Trie 树的本质,就是利用字符串之间的公共前缀,将重复的前缀合并在一起。

how,hi,her,hello,so,see
在这里插入图片描述

其中,根节点不包含任何信息,每个节点表示一个字符串中的字符,从根节点到红色节点的一条路径表示一个字符串(红色节点并不都是叶子节点)。

3. 查找

当在Trie树中查找一个字符串时,如“her”,就将要查找的字符串分割成单个的字符h,e,r,然后从Trie树的根节点开始匹配。但,假若要查找的字符串是“he”,用上面同样的方法,从根节点开始,沿着某条路径来匹配,发现路径的最后一个节点“e”不是红色的,即“he”是某个字符串的前缀,但不能完全匹配任何字符串。

二 、如何实现一课Trie树?

1,Trie树主要有两个操作,一个是将字符串集合构造成Trie树。这个程可分解为:
  • 将一个字符串插入到Trie树的过程
  • 在Trie树中查询一个字符串
2,如何存储一个Trie树

①:Trie树是一个多叉树,需要存储一个节点的所有子节点的指针。
②:一种经典的存储方式:借助散列表额思想,通过一个下标与字符一一映射的数组,来存储子节点的指针。

class TrieNode {
   
  char data;
  TrieNode children[26];
}
  • 1
  • 2
  • 3
  • 4
  • 5

借助散列表的思想,我们通过一个下标与字符一一映射的数组,来存储子节点的指针。
在这里插入图片描述
假设字符串中只有从a到z这26个小写字母,从数组中下标为0的位置,存储指向子节点a的指针,下标为1的位置存储指向子节点b的指针,以此类推,下标为25的位置,储存的是指向的子节点z的指针。如果某个字符的子节点不存在,就在对应的下标的位置存储null。
当在Tri

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号