本文主要是介绍第六届传智杯第四题(abb),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
描述
leafee 最近爱上了 abb 型语句,比如“叠词词”、“恶心心”
leafee 拿到了一个只含有小写字母的字符串,她想知道有多少个 "abb" 型的子序列?
定义: abb 型字符串满足以下条件:
- 字符串长度为 3 。
- 字符串后两位相同。
- 字符串前两位不同。
输入描述:
第一行一个正整数 n
第二行一个长度为 n 的字符串(只包含小写字母)
1≤n≤10^5
输出描述:
"abb" 型的子序列个数。
示例1
输入:
6 abcbcc输出:
8说明:
共有1个abb,3个acc,4个bcc
示例2
输入:
4 abbb输出:
3
a[i][j]:表示 i 后出现了 n 次字母'j';
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);int n=scan.nextInt();long ans=0;String str=scan.next();int[][] a=new int[n+1][26];for(int i=n-1;i>=0;i--){char s=str.charAt(i);for(int j=0;j<26;j++){a[i][j]=a[i+1][j];}a[i][s-'a']++;}for(int i=0;i<n;i++){char ss=str.charAt(i);for(int j=0;j<26;j++){if(j!=ss-'a'&&a[i][j]>=2){ans+=(a[i][j]*(a[i][j]-1))/2;}}}System.out.println(ans);}
}
这篇关于第六届传智杯第四题(abb)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!