nyoj 5 Binary String Matching

這道題的意思是給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;
}

發佈了68 篇原創文章 · 獲贊 14 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章