Binary String Matching
2014-09-18 10:13
253 查看
Binary String Matching
时间限制:3000 ms | 内存限制:65535 KB难度:3
描述
Given two strings A and B, whose alphabet consist only ‘0’ and ‘1’. Your task is only to tell how many times does A appear as a substring of B? For
example, the text string B is ‘1001110110’ while the pattern string A is ‘11’, you should output 3, because the pattern A appeared at the posit
输入
The first line consist only one integer N, indicates N cases follows. In each case, there are two lines, the first line gives the string A, length (A) <= 10, and
the second line gives the string B, length (B) <= 1000. And it is guaranteed that B is always longer than A.
输出
For each case, output a single line consist a single integer, tells how many times do B appears as a substring of A.样例输入
3 11 1001110110 101 110010010010001 1010 110100010101011
样例输出
3 0 3
源代码:
基于数据结构模式匹配BP算法
#include <stdio.h> #include <string.h> #include <stdlib.h> char s[1000],t[10]; void index(char t[10],char s[1000]) { int i=0,j=0; int count=0; while(i<strlen(s)) { if(s[i] == t[j]) { i++; j++; } else { i=i-j+1; j=0; } if(j>=strlen(t)) { count++; i=i-j+1; j=0; } } printf("%d\n",count); } int main() { int n; scanf("%d",&n); // getchar(); while(n--) { scanf("%s%s",t,s); index(t,s); } system("pause"); return 0; }
基于模式匹配KMP算法
#include <stdio.h> #include <stdlib.h> #include <string.h> char p[1000], s[1000]; int next[1000]; void getnext() { int i = 0, j = -1, len = strlen(p); next[0] = -1; while (i < len - 1) { if (j == -1 || p[j] == p[i]) { j++; i++; next[i] = j; } else j = next[j]; } } int kmp() { int i = -1, j = -1, lenp = strlen(p), lens = strlen(s); getnext(); int num = 0; while (i < lens) { if (j == -1 || s[i] == p[j]) { ++i; ++j; } else j = next[j]; if (j == lenp) { i-=j; j = -1; num++; } } return num; } int main(void) { int n; while (~scanf("%d", &n)) { while (n--) { scanf("%s%s", p, s); printf("%d\n", kmp()); } } system("pause"); return 0; }
相关文章推荐
- NYoj-Binary String Matching-BF算法
- Binary String Matching——个人c++解
- NYOJ NO.5 Binary String Matching
- NYOJ 5 Binary String Matching
- NYOJ-Binary String Matching
- 【Binary String Matching 5】
- nyoj5 Binary String Matching
- Binary String Matching
- NYOJ5——Binary String Matching
- Nswoj每日一题:Binary String Matching
- Binary String Matching
- Binary String Matching 子串匹配
- 5 Binary String Matching【kmp】
- Binary String Matching
- 南阳ACM5-Binary String Matching
- NYOJ 5 Binary String Matching
- Binary String Matching
- 开开心心学算法--Binary String Matching
- NYOJ Binary String Matching的stl解法 酒馆浪人的博客
- NYoj 5 Binary String Matching