题目5:Binary String Matching
2017-10-20 21:01
239 查看
题目链接:
http://acm.nyist.net/JudgeOnline/problem.php?pid=5描述
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 |
算法思想:
可以使用普通的循环遍历加回溯就可以,因为目标串最大10000个字符,模式串最大10个字符,故不会超时。当然也可以使用KMP算法。还有更简单的就是使用C++STL库中string类的find的函数。源代码
/* Author:杨林峰 Date:2017.10.20 NYOJ(5):Binary String Matching */ #include <iostream> #include <string> using namespace std; int getNum(string pattern, string target) { int len1 = pattern.length(), len2 = target.length(); int i, j, ans = 0; for (i = 0; i <= len2 - len1; i++) { int tmp = i; for (j = 0; j < len1;) { //当模式串与目标串字符相等时,继续比较下一个字符 if (pattern[j] == target[i]) { i++; j++; } //否则,跳出循环 else { break; } //cout << i << " " << j << endl; } //判断目标串是否成功 if (j >= len1) ans++; //回溯 i = tmp; j = 0; } return ans; } int main() { int N, ans; string pattern, target; cin >> N; while (N--) { cin >> pattern >> target; ans = getNum(pattern, target); cout << ans << endl; } return 0; }
最优源代码
#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; } }
相关文章推荐
- 南阳理工oj题目练习---Binary String Matching
- 南阳理工ACM-题目5-Binary String Matching
- NYOJ 题目5 Binary String Matching
- NYOJ 题目5 Binary String Matching(string类使用)
- 题目5 Binary String Matching
- NYOJ题目5---Binary String Matching
- NYOJ 5Binary String Matching(带题目大意)
- NYOJ 题目5 Binary String Matching
- Binary String Matching
- ACM Binary String Matching
- NYOJ 5 Binary String Matching
- Binary String Matching
- Binary String Matching
- NYOJ5之Binary String Matching
- NYOJ 5 Binary String Matching (kmp 字符串匹配)
- nyoj 5 Binary String Matching(kmp)
- Binary String Matching
- Brute-Force算法 (eg.Binary String Matching)
- Binary String Matching
- NYOJ NO.5 Binary String Matching