提交时间:2024-10-04 15:11:14

运行 ID: 33135

#include<bits/stdc++.h> using namespace std; const int N=5000100; string s; struct node{ int x,y; }c[26],b[26]; bool cmp(node s,node l){ if(s.x!=l.x) return s.x<l.x; return s.y<l.y; } int main(){ //freopen("bigdata.in","r",stdin); //freopen("string.out","w",stdout); cin>>s; s=' '+s; long long ans=0; for(int i=1;i<s.size();i++){ //cout<<i<<" "; c[s[i]-'a'].x=c[s[i]-'a'].y; c[s[i]-'a'].y=i; //if(c[s[i]-'a'].x==0) c[s[i]-'a'].x=i-1; for(int i=0;i<26;i++) b[i].x=c[i].x,b[i].y=c[i].y; //cout<<i<<" "; sort(b,b+26,cmp); int x=b[0].x,y=b[0].y; for(int i=1;i<26;i++){ if(y>=b[i].x) y=max(y,b[i].y); else{ ans+=y-x; //cout<<x<<" "<<y<<" "<<b[i].x<<" "<<b[i].y<<endl; y=b[i].y; x=b[i].x; } } //cout<<x<<" "<<y<<endl; ans+=y-x; } cout<<ans<<endl; }