提交时间:2024-10-04 16:06:23

运行 ID: 33157

#include <bits/stdc++.h> using namespace std; int sum[5000010][27]; string s; int n; int ans=0; int main(){ getline(cin,s); n=s.size(); s=' '+s; for (int i=1;i<=n;i++){ for (int j=1;j<=26;j++){ sum[i][j]=sum[i-1][j]; } sum[i][s[i]-'a'+1]=i; } for (int i=1;i<=n;i++){ vector<pair<int,int>> ve; for (int j=1;j<=26;j++){ int r=sum[i][j]; int l=sum[r-1][j]; l++; if (l<=r){ ve.push_back({l,r}); } } sort(ve.begin(),ve.end()); int r=0; for (auto i:ve){ int x=i.first,y=i.second; if (x>r) ans+=y-x+1; else if (y>r) ans+=y-r; r=max(r,y); } } cout<<ans<<endl; return 0; }