程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> NYoj-Binary String Matching-BF算法

NYoj-Binary String Matching-BF算法

編輯:C++入門知識

NYoj-Binary String Matching-BF算法


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 
//******BF算法***********/ 
#include
#include
#include
#include
#include
using namespace std;
#define MAXSTRLEN  1000
int main()
{
	char s[MAXSTRLEN+10];
	char t[11];
	int T;
	scanf("%d",&T);
	while(T--)
	{
		scanf("%s %s",t,s);
		int j=0,i=0;
	    int len_s=strlen(s);
	    int len_t=strlen(t);
	    int count=0;
	    while(i<=len_s)
	    {
	    	if(s[i]==t[j])
		    {
			   ++i;
			   ++j;
			   if(j==len_t)
			   { 
			      count++;
			      i=i-len_t+1;
			      j=0; 
			   }  
		    }
		    else
		    {
			   i=i-j+1;
			   j=0;
		    }
       }
       printf("%d\n",count);
	}
	
	return 0;
} 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved