Description

The French author Georges Perec (1936–1982) once wrote a book, La disparition, without the letter 'e'. He was a member of the Oulipo group. A quote from the book:

Tout avait Pair normal, mais tout s’affirmait faux. Tout avait Fair normal, d’abord, puis surgissait l’inhumain, l’affolant. Il aurait voulu savoir où s’articulait l’association qui l’unissait au roman : stir son tapis, assaillant à tout instant son imagination, l’intuition d’un tabou, la vision d’un mal obscur, d’un quoi vacant, d’un non-dit : la vision, l’avision d’un oubli commandant tout, où s’abolissait la raison : tout avait l’air normal mais…

Perec would probably have scored high (or rather, low) in the following contest. People are asked to write a perhaps even meaningful text on some subject with as few occurrences of a given “word” as possible. Our task is to provide the jury with a program that counts these occurrences, in order to obtain a ranking of the competitors. These competitors often write very long texts with nonsense meaning; a sequence of 500,000 consecutive 'T's is not unusual. And they never use spaces.

So we want to quickly find out how often a word, i.e., a given string, occurs in a text. More formally: given the alphabet {'A''B''C', …, 'Z'} and two finite strings over that alphabet, a word W and a text T, count the number of occurrences of W in T. All the consecutive characters of W must exactly match consecutive characters of T. Occurrences may overlap.

Input

The first line of the input file contains a single number: the number of test cases to follow. Each test case has the following format:

  • One line with the word W, a string over {'A''B''C', …, 'Z'}, with 1 ≤ |W| ≤ 10,000 (here |W| denotes the length of the string W).
  • One line with the text T, a string over {'A''B''C', …, 'Z'}, with |W| ≤ |T| ≤ 1,000,000.

Output

For every test case in the input file, the output should contain a single number, on a single line: the number of occurrences of the word W in the text T.

Sample Input

3
BAPC
BAPC
AZA
AZAZAZA
VERDI
AVERDXIVYERDIAN

Sample Output

1
3
0

Source

题意:看样例。
KMP模板,程序模拟+手动模拟大概是明白了一些。
 #include <iostream>
#include <cstdio>
#include <cstring> using namespace std; char A[+],B[+];
int T[+];
int n,ans; void calc_T()//找到失配函数
{
T[]=-;
int j,lenA=strlen(A);
for (int i=;i<lenA;i++)
{
j=T[i];
while (j!=- && A[j]!=A[i]) j=T[j];
T[i+]=++j;
}
} void kmp(int lenA)
{
calc_T();
int j=,k=,lenB=strlen(B);
while (k<lenB && j<lenA)
{
if (k==- || A[j]==B[k]) j++,k++;
else k=T[k];
if (k==lenB) ans++,k=T[k];
}
//return ans;
} int main()
{
while (~scanf("%d",&n))
{
for (int i=;i<=n;i++)
{
ans=;
scanf("%s%s",B,A);
kmp(strlen(A));
printf("%d\n",ans);
}
}
}

Code

最新文章

  1. 使用nodejs爬取拉勾苏州和上海的.NET职位信息
  2. Javascript进度条
  3. java.lang.OutOfMemoryError: PermGen space异常处理(内存溢出)
  4. Android 命令管理项目
  5. express新旧语法对比
  6. 理解perl的编码转换——utf8以及乱码
  7. C#实现APK自动打包
  8. SAP增强总结-第二代增强(SMOD、CMOD)【转载】
  9. Java基础知识强化之网络编程笔记06:TCP之TCP协议发送数据 和 接收数据
  10. input添加邮箱的时候自动显示后缀
  11. Tomcat 启动 Debug模式
  12. spring 注解方式配置Bean
  13. Uva - 177 - Paper Folding
  14. Spring 进入Controller前参数校验
  15. 华为AR配置内部服务器示例(只有1个公网IP)
  16. I18nUtils
  17. 微信小程序自动定位,通过百度地图根据经纬度获取该地点所在城市信息
  18. 二进制数值Byte [] 转Base64字符串
  19. vue全家桶+Koa2开发笔记(1)--vuex
  20. 【leetcode 简单】 第八十二题 反转字符串

热门文章

  1. 【译】Visual Studio 15 预览版更新说明
  2. 对数据库触发器new和old的理解
  3. mac liteIDE调试配置
  4. go-martini 简单分析之二
  5. android 入门-防微信拍摄视频 按钮事件处理
  6. ios github网址
  7. HDU 5876 Sparse Graph BFS 最短路
  8. Linux学习笔记(22) Linux启动管理
  9. Loadrunner中百分比模式和Vuser模式
  10. 创建一个Portlet工程