#include <algorithm> #include <iostream> #include <iterator> #include <string> #include <unordered_map> #include<vector> using namespace std; int main() { int n; cin>>n; std::string str; cin>>str; std::unordered_map<char, vector<int>> charindices; for(int i=0;i<n;i++){ charindices[str[i]].push_back(i);//将每个不同字符的索引保留 } long long res=0; for(int i=0;i<n;i++){ char a=str[i]; for(auto& [b,indice]:charindices){ if(a==b) continue; auto it=upper_bound(indice.begin(),indice.end(), i);//找出大于索引a的位置 int cnt=distance(it, indice.end()); if(cnt>=2){ res+=cnt*(cnt-1)/2; } } } cout<<res; return 0; } // 64 位输出请用 printf("%lld")