Codeforces 385B Bear and Strings(字符串)

题目连接:Codeforces 385B Bear and Strings


题目大意:给出一个字符串,问说该字符串中有多少个子串包含“bear”。


解题思路:遍历,每次找到“bear”,就用该串前面个字符数x,以及该串后面的字符数y,ans += (x+1)*(y+1)- 前一个“bear”所在位置的字符串(重复的)


#include <stdio.h>
#include <string.h>
#include <iostream>

using namespace std;
typedef long long ll;

const int N = 50005;

int main() {
	char str[N];
	scanf("%s", str);	

	ll x = 0, len = strlen(str), ans = 0;
	for (ll i = 0; i < len - 3; i++) {
		if (str[i] == ‘b‘ && str[i+1] == ‘e‘ && str[i+2] == ‘a‘ && str[i+3] == ‘r‘) {
			ans += ((i + 1) * (len - i - 3) - x * (len - i - 3));
			x = i + 1;
		}
	}
	cout << ans << endl;
	return 0;
}


Codeforces 385B Bear and Strings(字符串)

上一篇:Codeforces 385C Bear and Prime Numbers(数论)


下一篇:tomat重新部署项目myeclispe的console没反应