#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int L[100010],R[100010],vis[30],ans;
string s;
int main()
{
cin >> s;
fill(vis,vis+26,-1);
for (int i = 0;i < s.length();i++)
{
L[i] = vis[s[i]-'a'];
vis[s[i]-'a'] = i;
}
fill(vis,vis+26,s.length());
for (int i = s.length() - 1;i >= 0;i--)
{
R[i] = vis[s[i] - 'a'];
vis[s[i] - 'a'] = i;
}
for (int i = 0;i < s.length();i++)
{
ans += (i - L[i]) * (R[i] - i);
}
cout << ans;
return 0;
}
蓝桥杯-子串分值
最新推荐文章于 2024-10-02 22:45:05 发布