思路

  • 暴力枚举超时。
  • 抓住“CHN”字符串只有三个字符这个特点。
  • 统计C的数量countC
  • 每遇到一个H字符,就能构成countC数量的CH串,countCH += countC
  • 每遇到一个N字符,就能构成countCH数量的CHN串,所以ans += countCH
  • 最后的结果就是ans
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        /*统计子串*/
        Scanner in = new Scanner(System.in);
        String s = in.nextLine();
        String ss = "CHN";
        long countC = 0;
        long  countCH = 0;
        long ans = 0;
        for(int i = 0; i < s.length(); i++){
            if(s.charAt(i)=='C') countC++;
            if(s.charAt(i)=='H') countCH+=countC; //遇到H就可以组成countC个CH
            if(s.charAt(i)=='N') ans += countCH; //遇到N就可以组成countCH个CHN
        }
        System.out.println(ans);
    }
}