NYOJ 5 Binary String Matching

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 
资料参考strstr函数:http://www.cplusplus.com/reference/cstring/strstr/(c语言版)
<string>:find函数http://www.cplusplus.com/reference/string/string/find/(c++)
代码参考:
 1  
 2 #include<iostream>
 3 #include<string>
 4 #include<algorithm>
 5  using namespace std;
 6  int main() {
 7  int n;
 8  cin >> n;
 9  while (n--) {
10  int flag, s = 0;
11  string ch, str;
12  cin >> ch >> str;
13  flag = str.find(ch, 0);
14  while (flag != string::npos) {
15         //The position of the first character of the first match.
16         //If no matches were found, the function returns string::npos.
17  s++;
18  flag = str.find(ch, flag + 1);
19  }
20  cout << s << endl;
21  }
22  }
23         
View Code

 

posted on 2013-08-29 12:09  落水寒冰  阅读(161)  评论(0编辑  收藏  举报

导航