您的位置:首页 > 其它

Binary String Matching 字符串的查找匹配 STL

2014-02-18 11:34 357 查看


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


来源
网络

#include<algorithm>
#include<iostream>
#include<string>
#include<cstring>
using namespace std;
int main()
{
int n;
cin>>n;
string s,s1,s2;
while(n--)
{
string::size_type position=0;
//position = s.find("you"); //find 函数 返回you 在s 中的下标位置
//cout<<flag<<endl;
cin>>s1>>s2;
int cont =0;
while((position=s2.find(s1,position))!=(string::npos)) //find 必须匹配完整的字符串,find_first_of只需要匹配部分
{
cont++;
position++;
}
cout<<cont<<endl;
}
return 0;
}


或者:

#include<iostream>
#include<string>
using namespace std;
int main()
{
int n;
cin>>n;
while(n--)
{
int count=0;
string str1,str2,a="";
cin>>str1>>str2;
for(int i=0;i<str2.size();i++)
{
a=str2.substr(i,str1.size()); //substr() 从一个字符串复制一个从指定位置开始,并具有指定长度的子字符串。里边两个参数,第一个起始位置,第二个提取字符数
if(a==str1)
count++;
}
cout<<count<<endl;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: