giai bai tap
unknown
c_cpp
4 years ago
1.3 kB
6
Indexable
#include <bits/stdc++.h> using namespace std; #define pii pair<int, int> #define fi first #define se second string S; vector<pii> ID[25]; void split() { int L = 0; for (int R = 0; R < S.size(); R++) if (S[R] != S[R + 1]) { int chr = S[R] - 65; ID[chr].push_back({L, R}); L = R + 1; } } int cnt(int vt, int size) { if (size == 1) return (ID[vt][0].se - ID[vt][0].fi + 1); else if (size == 2) { if (ID[vt][1].fi - ID[vt][0].se == 2) return (ID[vt][0].se - ID[vt][0].fi + 1) + (ID[vt][1].se - ID[vt][1].fi + 1); } else { int max_length = INT_MIN; for (int i = 1; i < ID[vt].size(); i++) if (ID[vt][i].fi - ID[vt][i - 1].se == 2) { int length = (ID[vt][i].se - ID[vt][i].fi + 1) + (ID[vt][i - 1].se - ID[vt][i - 1].fi + 1) + 1; max_length = max(max_length, length); } return max_length; } } void process() { int ans = INT_MIN; for (int i = 0; i <= 25; i++) if (ID[i].size() != 0) ans = max(ans, cnt(i, ID[i].size())); cout << ans; } int main() { cin >> S; split(); process(); return 0; }
Editor is loading...