标签:nis string sample ios return lap nta typedef ima
InputThe 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.
OutputFor 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
不会kmp的我mmp
网上的题解全是kmp
我觉得hash暴力也应该也行
实践证明 暴力hash是可以的
1 #include <stdio.h> 2 #include <string.h> 3 #include <iostream> 4 #include <algorithm> 5 #include <vector> 6 #include <queue> 7 #include <set> 8 #include <map> 9 #include <string> 10 #include <math.h> 11 #include <stdlib.h> 12 #include <time.h> 13 using namespace std; 14 typedef unsigned long long ull; 15 const int maxn = 1e4 + 10; 16 const int seed = 13331; 17 ull HASH, s[maxn*100], p[maxn*100]; 18 char a[maxn], b[maxn*100], ans[maxn*100]; 19 void init() { 20 p[0] = 1; 21 for (int i = 1 ; i < maxn ; i++) 22 p[i] = p[i - 1] * seed; 23 } 24 int main() { 25 init(); 26 int t; 27 scanf("%d", &t); 28 while(t--) { 29 scanf("%s%s", a, b ); 30 int lena = strlen(a), lenb = strlen(b); 31 HASH = 0; 32 for (int i = 0 ; i < lena ; i++) 33 HASH = HASH * seed + a[i]; 34 int top = 0; 35 s[0] = 0; 36 int sum = 0; 37 for (int i = 0 ; i < lenb ; i++) { 38 ans[top++] = b[i]; 39 s[top] = s[top - 1] * seed + b[i]; 40 if ( top >= lena && s[top] - s[top - lena]*p[lena] == HASH ) sum++; 41 } 42 printf("%d\n", sum); 43 } 44 return 0; 45 }
标签:nis string sample ios return lap nta typedef ima
原文地址:https://www.cnblogs.com/qldabiaoge/p/9160617.html