当前位置: 首页 > news >正文

传智杯 第六届—E

题目描述:

        leafee 最近爱上了 abb 型语句,比如“叠词词”、“恶心心”。 leafee 拿到了一个只含有小写字母的字符串,她想知道有多少个 "abb" 型的子序列?

定义: abb 型字符串满足以下条件:

  1. 字符串长度为 3 。

  2. 字符串后两位相同。

  3. 字符串前两位不同。

输入描述:

        第一行一个正整数 n

        第二行一个长度为 n 的字符串(只包含小写字母)(1≤n≤10^5)

输出描述:

"abb" 型的子序列个数。 

示例1

输入:

6
abcbcc

输出:

8

说明:

        共有1个abb,3个acc,4个bcc

示例2

输入:

4
abbb

输出:

3

解题思路:

        本题是求字符串中所以的abb序列,我们采用的方法是先将字符串中的所有字符的个数记录下来,分别存储在char_number数组的对应位置,例如字符a的个数存储在char_number[0]的位置。然后依次遍历整个字符串,找到该字符后面所有字符的个数(char_number),当某个字符与该字符不同且其个数>2,那么就会产生以该字符为首的abb序列,其个数为C_{4}^{2},然后再将该字符所对应的char_number数-1,代表后面该字符的个数-1,最终循环结束过后,就可以得到所以的序列个数。

注意:

        ①当字符串长度过大时,可能会导致最终计算得到的序列个数较大,所以不能采用int型来记录序列个数,可以采用long long型来记录序列个数;

        ②本题的问题是求得字符串中所有的序列,而不是连续的序列abb;

        ③采用3个循环得到的运行会超时,所以最多只能采用两个循环。

代码:

#include<iostream>
using namespace std;
int main()
{//创建一维动态数组int num;   //用于存储字符的个数cin>>num;char *ch = new char[num];//输入字符for(int i=0;i<num;i++){cin>>ch[i];}//查找long long total = 0;    //用于记录abb型序列的个数int char_number[27] = {0};//记录每个字符的个数for(int i=0;i<num;i++){//将每个字符对应的数组下标i所对应的值+1,例如a对应数组下标0,若ch[j]='a',则char_number[0]++char_number[ch[i]-97]++;}    //若j后面含有n个相同的字符,则会构成n-1个abb序列(其中n>1)for(int j=0;j<num-2;j++){for(int k=0;k<26;k++){if(char_number[k] > 1 && k != int(ch[j]-97)){total += char_number[k] * (char_number[k]-1) / 2;}}//将这个字符在数组中的个数-1(用于记录在这个字符后面的各个字符个数)char_number[int(ch[j]-97)]--;}cout<<total<<endl;system("pause");return 0;
}

http://www.lryc.cn/news/458745.html

相关文章:

  • 2024.10月12日--- SpringMVC异常处理
  • 边缘人工智能(Edge Intelligence)
  • C++20主要特性
  • IterComp: 从模型图库中迭代合成感知反馈学习,用于文本到图像的生成
  • 6.Python 函数进阶(函数多返回值、函数多种传参方式、匿名函数)
  • 视频汇聚平台EasyCVR支持云端录像丨监控存储丨录像回看丨录像计划丨录像配置
  • 【Spring】获取 Cookie和Session
  • MyBatis-Plus 的核心插件及其使用介绍
  • 雷池社区版本SYSlog使用教程
  • Leetcode 下一个排列
  • WPF中的布局
  • 【Spring】Spring和SpringMVC为什么需要父子容器
  • Origin制图——双轴线图实现
  • 【算法系列-哈希表】两个集合的交集问题
  • linux 效率化 - zsh + tmux
  • Python学习-函数
  • 点评项目-4-隐藏敏感信息、使用 redis 优化登录业务
  • Redis异步实现解析
  • matlab 相关
  • 从组会尴尬到学术突破:Transformer助力跨域推荐解析
  • 【Flutter、H5、Web?前端个人总结】分享从业经历经验、自我规范准则,纯干货
  • mysql主从配置
  • sklearn pipeline
  • springboot实现服务注册与发现
  • 美格智能亮相2024中国移动全球合作伙伴大会,共赢AI+时代
  • 【LeetCode】动态规划—309. 买卖股票的最佳时机含冷冻期(附完整Python/C++代码)
  • IDE启动失败
  • 【Kubernetes】常见面试题汇总(六十)
  • maven dependency中scope的取值类型
  • 线性代数在大一计算机课程中的重要性