解説動画はこちら!
コード
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define rep(i, n) for (int i = 0; i < (n); ++i)
int main() {
int n;
cin >> n;
string s;
cin >> s;
vector<pair<char, int>> v;
v.push_back({s[0], 1});
// ssskkyskkkkyという文字列に対して
// v = {{'s', 3}, {'k', 2}, {'y', 1}, {'s', 1}, {'k', 4}, {'y', 1}}というpair型のvectorを作成する
for (int i = 1; i < s.size(); i++) {
// 今見ているcharがvの末尾の要素のfirstと等しいのであれば, secondをインクリメントする
if (v.back().first == s[i]) v.back().second++;
else {
// そうでなければ, 要素を追加
v.push_back({s[i], 1});
}
}
// 上で作成したvに対して
// al_cnt = {0,0,0,...,4,0,...,3,0,...,1,0} というvectorを作成する
a,b,c,...,k,l,...,s,t,...,y,z
vector al_cnt(26, 0);
for (auto e : v) {
al_cnt[e.first - 'a'] = max(al_cnt[e.first - 'a'], e.second);
}
int ans = 0;
for (auto e : al_cnt) ans += e;
cout << ans << endl;
return 0;
}
コメント