// #牛客春招刷题训练营# https://www.nowcoder.com/discuss/726480854079250432 #include <array> #include <iostream> using namespace std; array<int, 26> a{0};//---------用来计算后缀字母出现的个数,不过不是预处理的 int main() { int n; string s; long long ans = 0; cin >> n >> s; for (int i = 0; i < n; i++) a[s[i] - 'a']++; for (int i = 0; i < n; i++){ for (int j = 0; j < 26; j++){ if (s[i] - 'a' != j){ if (a[j] > 1){ ans += (a[j] - 1) * a[j] / 2;//--------与除了自己以外的每个字母匹配,首相加末项乘以项次除以二 } } else a[j]--;//--------更新后缀,应为本次循环用不到(不能自己和自己组成aaa的形式),所以晚点更新也没事 } } cout << ans; } // 64 位输出请用 printf("%lld")