Binary String Matching
问题 B: Binary String Matching
时间限制: 3 Sec 内存限制: 128 MB提交: 4 解决: 2
[提交][状态][讨论版]
题目描述
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
#include <iostream> #include <cstdio> #include <cstring> using namespace std; int main() { int n; char pattern[1111]; char str[1111]; char temp[1111]; int cou=0; int b; scanf("%d",&n); for(int i=0;i<n;i++){ cou=0; scanf("%s",pattern); scanf("%s",str); int lens=strlen(str); int lenp=strlen(pattern); for(int j=0;j<lens;j++){ b=0; if(str[j]==pattern[0]){ for(int h=0;h<lenp;h++){ if(pattern[h]!=str[j+h]){ b=1; break; }else{ continue; } } if(b==0){ cou++; } } } if(i==n-1){ printf("%d",cou); }else{ printf("%d\n",cou); } } return 0; }
只前在自己学校oj提交可以ac,但到别的oj提交就过不了,自己学校oj的测试数据太弱!!
又重新写了一个
#include <iostream> #include <cstdio> #include <stack> #include <cstring> using namespace std; int main() { int n; char ch; int b=0; char s[10005]; scanf("%d",&n); for(int i=0;i<n;i++){ stack<char> st1; scanf("%s",s); int len=strlen(s); st1.push(s[0]); for(int j=1;j<len;j++){ b=0; if(st1.empty()){ st1.push(s[j]); }else{ if(s[j]==')'){ if(st1.top()=='('){ st1.pop(); }else{ printf("No\n"); b=1; while(!st1.empty()){ st1.pop(); } break; } } if(s[j]==']'){ if(st1.top()=='['){ st1.pop(); }else{ printf("No\n"); b=1; while(!st1.empty()){ st1.pop(); } break; } } if(s[j]=='['||s[j]=='('){ st1.push(s[j]); } } } if(b!=1&&st1.empty()){ printf("Yes\n"); } if(b==0&&!st1.empty()){ printf("No\n"); } } return 0; }