void solve() {
int n;cin >> n;
string s;cin >> s;
map<char, int>mp;
map<char, map<char, int>>mp2;
int ans = 0;
for (char i : s) {
for (char j = 'a';j <= 'z';j++) {
ans += mp2[j][i];
}
for (char j = 'a';j <= 'z';j++) {
if (i != j) {
mp2[j][i] += mp[j];
}
}
mp[i]++;
}
cout << ans << endl;
}
mp记录某个字符结尾的次数,mp2记录某两个字符结尾的次数,但不记录相同的,按题意更新答案即可,累加j i i这样格式的到ans

京公网安备 11010502036488号