AC自动机代码模板
来源:互联网 发布:北津学院教务网络 编辑:程序博客网 时间:2024/05/17 05:19
自己的AC自动机代码模板(很牛比的算法):
class Node{Node[] childs;Node fail;int sum;public Node() {sum=0;childs=new Node[26];}}public class Main {public Node insert(Node root,String s){Node temp=root;root.sum++;for(int i=0;i<s.length();i++){int index=s.charAt(i)-'a';if(temp.childs[index]==null){temp.childs[index]=new Node();}temp=temp.childs[index];temp.fail=root;}temp.sum++;return root;}public void getFail(Node root){Queue<Node> queue=new LinkedList<Node>();queue.add(root);while(!queue.isEmpty()){Node node=queue.poll();for(int i=0;i<26;i++){if(node.childs[i]!=null){Node temp=node.fail;while(temp!=null){if(temp.childs[i]!=null){node.childs[i].fail=temp.childs[i];break;}temp=temp.fail;}if(temp==null) node.childs[i].fail=root;queue.add(node.childs[i]);}}}}public int query(String s,Node root){Node temp=root;int res=0;for(int i=0;i<s.length();i++){int index=s.charAt(i)-'a';while(temp!=null&&temp.childs[index]==null) temp=temp.fail;if(temp==null) temp=root;else temp=temp.childs[index];Node p=temp;while(p!=root&&p.sum!=0){res+=p.sum;p.sum=0;p=p.fail;}}return res;}}
阅读全文
1 0
- AC自动机代码模板
- Ac自动机模板代码
- 【AC自动机】AC自动机模板
- AC自动机模板
- AC自动机模板
- AC自动机模板
- AC自动机模板
- AC自动机模板
- AC自动机模板
- AC自动机模板 hdu2222
- AC自动机模板
- AC自动机模板
- 数据结构--AC自动机--模板
- ac自动机模板
- AC自动机模板
- AC自动机模板
- hdu2222 ac自动机模板
- ac自动机模板。。。。。
- 使用css3 transform 属性来变换背景图方法步骤详解
- Itext图片转PDF
- CAS单点登录原理
- sublime text3 插件sftp使用方法 快捷键 timeout connect 连接超时解决
- UE4(一)快速上手入门学习
- AC自动机代码模板
- ThinkPad黑将S笔记本进bios设置u盘启动教程
- (6) 什么是数据对象--每天五分钟学习数据结构
- 文章标题
- RecyclerView的touch事件
- 统一导航路由方案
- jquery获取checkbox选中值 这些求和
- Android实现沉浸式状态栏之再理解
- float 和int转换是怎么做到的