#include <iostream>
#include <algorithm>
using namespace std;
const int N = 30;
const int M = 10005;
int main()
{
string s;
cin >> s;
int n = s.size();
int last[N], left[M], right[M];
fill(last, last + N, -1);
for (int i = 0; i < n; i ++)
{
int num = s[i] - 'a';
left[i] = last[num] + 1;
last[num] = i;
}
fill(last, last + N, n);
for (int i = n - 1; i >= 0; i --)
{
int num = s[i] - 'a';
right[i] = last[num] - 1;
last[num] = i;
}
int res = 0;
for (int i = 0; i < n; i ++)
{
res += (i - left[i] + 1) * (right[i] - i + 1);
}
cout << res << endl;
return 0;
}
蓝桥杯模拟题
最新推荐文章于 2021-06-05 21:03:44 发布