有没有佬提供一点思路,怎么把时间复杂度降下去
  • 板块题目总版
  • 楼主wanttoac
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/4/20 00:57
  • 上次更新2024/4/20 10:27:17
查看原帖
有没有佬提供一点思路,怎么把时间复杂度降下去
1258100
wanttoac楼主2024/4/20 00:57
#include<bits/stdc++.h>
using namespace std;
string s;
int n, cnt = 0;
int g[100005][26];
bool check(int i, int j) {
	int maxx = 0;
	for (int k = 0; k < 26; k++) maxx = max(maxx, g[i][k] - g[j - 1][k]);
	return maxx <= (i - j + 1) / 2;
}
int main() {
	cin >> s;
	n = s.length();
	for (int i = 1; i <= n; i++) {
		for (int j = 0; j < 26; j++)g[i][j] += g[i - 1][j];
		g[i][s[i - 1] - 'a']++;
	}
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j < i; j++) {
			if (check(i, j))cnt++;
		}
	}
	cout << cnt;
	return 0;
}
2024/4/20 00:57
加载中...