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

苗栗县网站建设_网站建设公司_过渡效果_seo优化

朋友让帮忙做网站,网站死链如何处理,大型销售网站建设,小程序源码搭建AC自动机 AC自动机介绍代码演示 indexTree AC自动机介绍 AC自动机算法是一种基于Trie树和有限状态机的字符串匹配算法。它在查找字符串时#xff0c;利用额外的失配指针进行回退#xff0c;转向其他分支#xff0c;避免重复匹配前缀#xff0c;从而提高算法效率。当一个字典… AC自动机 AC自动机介绍代码演示 indexTree AC自动机介绍 AC自动机算法是一种基于Trie树和有限状态机的字符串匹配算法。它在查找字符串时利用额外的失配指针进行回退转向其他分支避免重复匹配前缀从而提高算法效率。当一个字典串集合是已知的AC自动机算法可以以离线方式先求出并储存自动机以便日后使用。在这种情况下算法的时间复杂度为输入字符串长度和匹配数量之和。AC自动机算法的主要优势是高效、快速能够在大量文本中快速查找匹配项。 AC自动机算法的流程包括以下几个步骤 1.构建Trie树将所有字典串集合中的串进行前缀压缩得到Trie树。 2.构建Fail指针从根节点开始按照字典序遍历所有节点为每个节点设置Fail指针 3.初始化将初始状态设为根节点。 4.匹配从左到右扫描输入字符串根据当前字符找到下一个节点并更新Fail指针。如果找到匹配的串则记录下来。 5.回溯如果匹配失败则根据Fail指针回溯到下一个节点重新匹配。 通过以上流程AC自动机算法可以在O(mn)时间复杂度内完成字符串匹配其中m是输入字符串的长度n是字典串集合中的最长串的长度。 用图演示下AC自动机的结构. 红色的指针就是fail 指针. 代码演示 // 前缀树的节点public static class Node {// 如果一个nodeend为空不是结尾// 如果end不为空表示这个点是某个字符串的结尾end的值就是这个字符串public String end;// 只有在上面的end变量不为空的时候endUse才有意义// 表示这个字符串之前有没有加入过答案public boolean endUse;public Node fail;public Node[] nexts;public Node() {endUse false;end null;fail null;nexts new Node[26];}}public static class ACAutomation {private Node root;public ACAutomation() {root new Node();}public void insert(String s) {char[] str s.toCharArray();Node cur root;int index 0;for (int i 0; i str.length; i) {index str[i] - a;if (cur.nexts[index] null) {cur.nexts[index] new Node();}cur cur.nexts[index];}cur.end s;}public void build() {QueueNode queue new LinkedList();queue.add(root);Node cur null;Node cfail null;while (!queue.isEmpty()) {// 某个父亲curcur queue.poll();for (int i 0; i 26; i) { // 所有的路// cur - 父亲 i号儿子必须把i号儿子的fail指针设置好if (cur.nexts[i] ! null) { // 如果真的有i号儿子cur.nexts[i].fail root;cfail cur.fail;while (cfail ! null) {if (cfail.nexts[i] ! null) {cur.nexts[i].fail cfail.nexts[i];break;}cfail cfail.fail;}queue.add(cur.nexts[i]);}}}}// 大文章contentpublic ListString containWords(String content) {char[] str content.toCharArray();Node cur root;Node follow null;int index 0;ListString ans new ArrayList();for (int i 0; i str.length; i) {index str[i] - a; // 路// 如果当前字符在这条路上没配出来就随着fail方向走向下条路径while (cur.nexts[index] null cur ! root) {cur cur.fail;}// 1) 现在来到的路径是可以继续匹配的// 2) 现在来到的节点就是前缀树的根节点cur cur.nexts[index] ! null ? cur.nexts[index] : root;follow cur;while (follow ! root) {if (follow.endUse) {break;}// 不同的需求在这一段之间修改if (follow.end ! null) {ans.add(follow.end);follow.endUse true;}// 不同的需求在这一段之间修改follow follow.fail;}}return ans;}} indexTree 数据结构算法indexTree
http://www.lebaoying.cn/news/133960.html

相关文章:

  • 罗湖网站建微营销网站建设
  • 青岛自助建站软件百度网站建设费用
  • 上海网站推广公司黄骅市属于沧州吗
  • 做网站要用多少钱合作网站seo
  • 网站地址验证失败桂林漓江景区门票
  • 青海门户网站建设如何保存自己做的网站
  • 专业网站建设模板下载网页设计制作公司推荐
  • 世界网站流量排名开网站是干什么的
  • 湖州网站建设湖州网站建设优化大师使用方法
  • 一个好网站建设seopeix
  • 网站开发cms2022最火的新零售模式
  • 深圳做手机网站多少钱工会门户网站建设需求
  • 网站建设视频教程云盘西宁网站网站建设
  • 长沙企业模板建站wordpress编辑器技巧
  • 智能网站建设找三好科技北京网站开发培训班
  • 网站建设招标书网易搜索引擎入口
  • 产品推广网站设计论坛型网站怎么做的
  • 合肥专业做网站公司关于网站制作的文案
  • 北斗手表官方网站网站诸多
  • 做旅游广告在哪个网站做效果好哪里有建站代理加盟
  • 深圳网站程序开发制作网站控制面板
  • 网站维护团队石林网站建设
  • 广西南宁网站推广dw软件怎么制作网页视频
  • 做网站的目的和要求重庆网站建设大概需要多少钱
  • 微网站素材网页界面设计作品
  • 网站的论坛怎么做的宣传片拍摄如何计费
  • 济宁官方网站在线网站做图集相册
  • 从事网站开发方向国内 免费 云服务器
  • 个人引擎网站什么做镇江seo网络推广定制
  • 深圳网站制作哪家好网络营销的收获与体会