题解 | abb
abb
https://www.nowcoder.com/practice/0a8bbf8b9b5b4280957849ef4f240f07
#include <iostream> #include <unordered_map> #include <vector> using namespace std; int main() { int n; cin >> n; unordered_map<char,vector<int> > m; // 后一维度是下标 string s; cin >> s; for(int i = 0;i < n ;i ++){ m[s[i]].push_back(i); } long long sum = 0; for(auto it : m){ vector<int> v = it.second; for(int i = 0;i < v.size();i ++){ long long j = v[i] - i;//表示前面的下标中有几个a long long t = v.size() - i -1;//用于计算成对 sum += j * t; } } cout << sum; } // 64 位输出请用 printf("%lld")