題目連結
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 300005;
char s[maxn];
int main()
{
ll n, i;
scanf("%lld", &n);
scanf("%s", s);
ll ans = n * (n - 1) / 2; //假設字元串中隻有一種字母,所有情況都滿足
ll cnt = 1;
for (i = 1; i < n; i++)
{
if (s[i] == s[i - 1])
cnt++;
else
{
ans -= cnt;
cnt = 1;
}
}
cnt = 1;
for (i = n - 2; i >= 0; i--)
{
if (s[i] == s[i + 1])
cnt++;
else
{
ans -= cnt;
cnt = 1;
}
}
for (i = 1; i < n; i++)
{
if (s[i] != s[i - 1])
ans++;
}
printf("%lld\n", ans);
}