POJ3461KMP
2015-06-28 20:36
218 查看
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintWriter; import java.math.BigInteger; import java.util.Scanner; import java.util.Stack; import java.util.StringTokenizer; public class Main { public static void main(String[] args) { InputReader in = new InputReader(System.in) ; PrintWriter out = new PrintWriter(System.out); int t = in.nextInt() ; while((t--) > 0){ out.println( new KMP(in.next().toCharArray()).searchForm(in.next().toCharArray()) ) ; } out.flush() ; } } class KMP{ int m ; char[] p ; int[] fail ; KMP(char[] p){ m = p.length ; this.p = p ; fail = new int[m+1] ; int crt = fail[0] = -1 ; for(int i = 1 ; i <= m ; i++){ while(crt >= 0 && p[crt] != p[i-1]) crt = fail[crt] ; fail[i] = ++ crt ; } } int searchForm(char[] txt){ int n = txt.length , count = 0 ; for(int i = 0 , j = 0 ; i < n ; i++){ while(j >= 0 && txt[i] != p[j]) j = fail[j] ; if(++j == m){ count++ ; j = fail[j] ; //j = 0 ; } } return count ; } } class InputReader { public BufferedReader reader; public StringTokenizer tokenizer; public InputReader(InputStream stream) { reader = new BufferedReader(new InputStreamReader(stream), 32768); tokenizer = null; } public String next() { while (tokenizer == null || !tokenizer.hasMoreTokens()) { try { tokenizer = new StringTokenizer(reader.readLine()); } catch (IOException e) { throw new RuntimeException(e); } } return tokenizer.nextToken(); } public int nextInt() { return Integer.parseInt(next()); } }
相关文章推荐
- 远程通信(RPC,Webservice,RMI,JMS、EJB、JNDI的区别)对比
- 项目解决方案:解压app — 写入文件 — 压缩app — jarsigner重新签名app — 安装app
- 写给想要做自动化测试的人
- 关于互联网的一些看过或正在看的好的资料
- bluestacks手机模拟器安装qq或微信时,鼠标左键点聊天编辑框后会自动输入 c 字母
- Windows server 2008 R2访问文件权限设置
- Ubuntu怎么卸载vmware
- 学习单例模式
- spring中自定义属性编辑器CustomEditorConfigurer
- java垃圾回收算法
- 编写网络程序
- Xilinx实习一年总结
- CAS简介
- CodeForces Round #303 Div. 2
- FTP服务器的搭建
- 了解 web 及网络基础——极客学院学习笔记
- Struts1 生成Action请求的几种方式分析
- Windows server 2008 R2文件系统管理
- 自定义EditText画任意行线并限制文本的物理长度
- A9.linux驱动