• nyoj 5 Binary String Matching(string)


    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 
     1 #include <iostream>
     2 #include <string>
     3 #include <algorithm>
     4 using namespace std;
     5 int main(){
     6     int test, j, i;
     7     string a, b;
     8     int n;
     9     cin >> test;
    10     while(test--){
    11         n = 0;
    12         cin >> a >> b;
    13         int len_a = a.length(), len_b = b.length();
    14         for(i = 0; i < len_b; i++){
    15             int k = i;
    16             for(j = 0; j < len_a; k++,j++){
    17                 if(b[k] != a[j])
    18                     break;
    19             }
    20             if(j == len_a)
    21                 n++;
    22         }
    23         cout << n << endl;
    24     }
    25     return 0;
    26 }

    上面是直接遍历。

    以下代码利用find()函数

     1 #include <iostream>
     2 #include <string>
     3 using namespace std;
     4 
     5 int main(){
     6     int t;
     7     string a, b;
     8     cin >> t;
     9 
    10     while(t--){
    11         cin >> a >> b;
    12         int n = 0;
    13         int index = b.find(a, 0);//返回从0开始找到子串在串中的位置下标
    14         while(index != b.npos){//npos表示不存在
    15             n++;
    16             index = b.find(a, index + 1);
    17         }
    18         cout << n << endl;
    19     }
    20 
    21     return 0;
    22 }    
  • 相关阅读:
    ARC 117 D
    Maven依赖踩坑记录
    MobaXterm连接本地CentOS7
    Git在IDEA下的常用操作
    mq消息中间件
    nginx的作用
    Git的使用
    docker
    redis
    导出excel
  • 原文地址:https://www.cnblogs.com/qinduanyinghua/p/6392681.html
Copyright © 2020-2023  润新知