题目链接([https://blog.csdn.net/m0_54621932/article/details/114035181]
#include <stdio.h>
#include <string.h>
int main()
{
char s[100005];
int pre[100005],next[100005],a[26];
scanf("%s",s+1);
int n=strlen(s)-1;
for(int i=1;i<=n;i++)
{
int c=s[i]-'a';
pre[i]=a[c];
a[c]=i;
}
for(int i=0;i<26;i++)
a[i]=n+1;
for(int i=n;i>0;i--)
{
int c=s[i]-'a';
next[i]=a[c];
a[c]=i;
}
long long int ans=0;
for(int i=1;i<=n;i++)
ans+=(i-pre[i])*(next[i]-i);
printf("%lld",ans);
return 0;
}