题解 | abb

abb

https://www.nowcoder.com/practice/0a8bbf8b9b5b4280957849ef4f240f07

//  #牛客春招刷题训练营# 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")

#写题解领奖励##牛客春招刷题训练营#
全部评论

相关推荐

程序员花海_:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
10-28 17:30
已编辑
华东交通大学 Java
想进开水团喝开水:字节的hr的本职工作就是黄金矿工
秋招笔试记录
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务