题解 | #abb#
abb
https://www.nowcoder.com/practice/0a8bbf8b9b5b4280957849ef4f240f07
#include <iostream> using namespace std; int main() { int n,i,word1[26]={0},word2[26]={0}; long long sum=0; string s; cin>>n; cin>>s; for(i=0;i<n;i++) { //保存小写字符个数 word1[s[i]-'a']++; } for(i=n-1;i>=0;i--) { word2[s[i]-'a']++; //反向计入,当该字符数超过1,则用该字符数-1再乘上前面所有不为该字符的数量 //意为将该字符确立为abb型中第二位 sum+=(word2[s[i]-'a']-1)*(i-word1[s[i]-'a']+word2[s[i]-'a']); } cout<<sum; }