您的位置:首页 > 其它

nyoj 5 Binary String Matching

2016-04-11 21:16 239 查看
这道题的意思是给2个字符串a和b,计算a在b中出现的次数。

比如:

111

11101111011

111就在字符串中出现了3次,在b中出现的3次的下标分别为0,1,2;4,5,6;5,6,7;

用常规的字符串匹配算法就能解决。

#include <iostream>
#include <string>
using namespace std;
int cut_string(string a,string b);
int main()
{
string a, b;
int i;
cin >> i;
while (i--)
{
int sum;
cin >> a >> b;
sum = cut_string(a,b);
cout << sum << endl;
}
return 0;
}
int cut_string(string a, string b)
{
int i = 0;
int sum = 0;
int j = 0;
while (i < b.size() && j < a.size() )
{
if (b[i] == a[j])
{
if (j == a.size() - 1)
{
i = i - j + 1;
j = 0;
sum++;
}
else
{
i++;
j++;
}
}
else
{
i = i - j + 1;
j = 0;
}
}
return sum;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  nyoj 字符串匹配