Binary String Matching
2016-05-18 19:24
295 查看
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
来源
网络
上传者
naonao
循环AC
标程:#include中的find()函数的应用。另外,m!=string::npos 意思是:m不等于字符串的尾部。
时间限制: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
来源
网络
上传者
naonao
循环AC
#include <iostream> #include <cstring> #include <string> #include <cstdlib> #include <algorithm> #include <cstdio> using namespace std; #define mem(a) memset(a, 0, sizeof(a)) char a[100], b[1100]; int main() { int n; cin >> n; while (n --) { mem(a); mem(b); cin >> a >> b; int res = 0, p1 = strlen(a), p2 = strlen(b); int num = 0; while (num <= p2-p1) { int flag = 1; for (int i = num, j = 0; j<p1; j++,i++) { if (a[j] != b[i]) flag = 0; } if (flag) res ++ ; num ++ ; //cout << res << endl; } cout << res << endl; } return 0; }
标程:#include中的find()函数的应用。另外,m!=string::npos 意思是:m不等于字符串的尾部。
#include<iostream> #include<string> using namespace std; int main() { string s1,s2; int n; cin>>n; while(n--) { cin>>s1>>s2; unsigned int m=s2.find(s1,0); int num=0; while(m!=string::npos) { num++; m=s2.find(s1,m+1); } cout<<num<<endl; } }
相关文章推荐
- 第12周课后实践 阅读程序,请写出这些程序的运行结果
- android中BitmapFactory.decodeByteArray的用法
- 关于三维实体分块的思想总结
- 压缩映射:简单最邻近搜索 -SLH
- Binary String Matching
- HoloLens开发手记 - 入门学习阶段总结
- BaseAdapter
- {题解}[jzoj4486] GDOI2016 Day1_T2 最长公共子串
- DOM启蒙——第十章
- mysql导入导出sql文件
- centOS中mysql的常用指令
- 矩阵学习和图学习
- Java 23种设计模式的有趣见解
- AngularJS $http简介1
- Java 内存区域和GC机制
- 项目管理能力提升四要素
- 链接分析算法系列
- java打印乘法表(4个)
- 图的广度优先搜索与深度优先搜索
- bzoj3524 [Poi2014]Couriers