题解 | abb

abb

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

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        //输入字符串
        String str = sc.next();

        //后缀和数组,suffix[i+1][j]表示str中第i个字母之后的对应字母出现次数
        int[][] suffix = new int[n + 1][26];
        for (int i = n - 1; i >= 0; i--) {
            char c = str.charAt(i);
            for (int j = 0; j < 26; j++) {
                suffix[i][j] = suffix[i + 1][j];
            }
            suffix[i][c - 'a']++;
        }

        //记录所有"abb"型子序列的个数
        long res = 0;

        for (int i = 0; i < n; i++) {
            char c = str.charAt(i);
            for (int j = 0; j < 26; j++) {
                //加上当前字母为前缀,所组成的"abb"型子序列的个数
                if (j != c - 'a' && suffix[i][j] >= 2) {
                    res += suffix[i + 1][j] * (suffix[i + 1][j] - 1) / 2;
                }
            }
        }


        System.out.println(res);
    }
}

全部评论

相关推荐

抽纸大侠:抱抱😘,首先你还有春招,然后就算这时候没上岸也没关系,大部分人都是这样,毕业了再找也成,最后工作只是生活的一小部分,找到工作也不是一个必须的事情。不要气馁不要焦虑你只是陷入了短暂的低谷,你也一直有退路
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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