字符串匹配

描述

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 <stdio.h>
#include <stdlib.h>

int main()
{
    int n,i,j;

    int temp;

    /** 保存A,B字符串 **/
    char A[11];
    char B[1001];

    //保存个数
    int count = 0;

    scanf("%d",&n);
    while(n--){
        getchar();

        count = 0;

        scanf("%s",A);
        scanf("%s",B);

        for(i = 0;B[i] != '\0';i++){

            if(B[i] == A[0]){
                //printf("0 == yes\n");

                int temp = i;

                for(j = 0;A[j] != '\0' && B[temp] != '\0';j++,temp++){

                    if(B[temp] != A[j]){
                        //printf("break\n");
                        break;
                    }

                    //printf("==\n");
                }

                if(A[j] == '\0')
                    count++;
            }
        }

        printf("%d\n",count);
    }

    return 0;
}
posted @ 2015-09-07 15:28  陈洪波  阅读(140)  评论(0编辑  收藏  举报