2207. 字符串中最多数目的子序列(24.9.24)

news2024/9/24 21:26:55

题目

** 问题描述 **
给你一个下标从 0 开始的字符串 text 和另一个下标从 0 开始且长度为 2 的字符串 pattern,两者都只包含小写英文字母。

你可以在 text 中任意位置插入一个字符,这个插入的字符必须是 pattern[0] 或者 pattern[1]。注意,这个字符可以插入在 text 开头或者结尾的位置。

请你返回插入一个字符后,text 中最多包含多少个等于 pattern 的子序列。子序列指的是将一个字符串删除若干个字符后(也可以不删除),剩余字符保持原本顺序得到的字符串。
** 示例 1 **
输入:text="abdcdbc", pattern="ac"
输出:4
解释:如果我们在 text[1]text[2] 之间添加 pattern[0]='a',那么我们得到 "abadcdbc"。那么 "ac" 作为子序列出现 4 次。其他得到 4 个 "ac" 子序列的方案还有 "aabdcdbc""abdacdbc"。但是,"abdcadbc""abdccdbc""abdcdbcc" 这些字符串虽然是可行的插入方案,但是只出现了 3 次 "ac" 子序列,所以不是最优解。可以证明插入一个字符后,无法得到超过 4 个 "ac" 子序列。

** 示例 2 **
输入:text="aabb", pattern="ab"
输出:6
解释:可以得到 6 个 "ab" 子序列的部分方案为 "aaabb""aaabb""aabbb"

** 提示 **

  • 1 < = t e x t . l e n g t h < = 1 0 5 1 <= text.length <= 10^5 1<=text.length<=105
  • pattern.length==2
  • textpattern 都只包含小写英文字母。

解题思路

见代码

代码

/*
假设pattern = "ac",那么其包含的子序列为:a,c,ac
我们只需要统计含有多少个a,c,ac
三者的和就是答案
*/
class Solution {
public:
    long long maximumSubsequenceCount(string text, string pattern) {
        //以例一为例:
        long long ans=0;
        long long cnt0=0,cnt1=0;
        for(char t:text){
            //如果加上 pattern[0], 就加在字符串开头,与字符串中的 pattern[1] 组成新的子序列
            if(t==pattern[1]){
                ans+=cnt0;
                cnt1++;
            }
            //如果加上 pattern[1], 就加在字符串结尾,与字符串中的 pattern[0] 组成新的子序列
            if(t==pattern[0]){
                cnt0++;
            }
        }
        //最终新增的子字符串数量为两个字符频数的最大值
        return ans+max(cnt0,cnt1);
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2161474.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

衍射的角谱理论

一、单色平面波与本征函数 不考虑夫琅禾费近似, 则相干光场在给定二平面间的传播过程就是通过一个二维线性空不变系统。 上式函数是这个系统的本征函数,表示振幅为1的平面波在xy平面上的复振幅分布,空间频率分量 = cos / , = cos / 与平面波的传播方向相联系, 空间…

java和mysql命名规则不一样,每次在mybatis中起别名太麻烦?来看看如何设置自动自动映射!

简介&#xff1a; 在 Java 开发中&#xff0c;当使用 MyBatis 框架连接 Java 代码与 MySQL 数据库时&#xff0c;常常会遇到 Java 和 MySQL 命名规则不一致的问题&#xff0c;这使得每次在 MyBatis 中为查询结果起别名变得繁琐。本教程将深入探讨如何设置自动映射&#xff0c;以…

java节假日工具类,判断一个日期是否是法定节假日

java节假日工具类&#xff0c;判断一个日期是否是法定节假日 1.HolidayUtil工具类2.工具类生成的日期json文件3.结果展示 无需链接数据库&#xff0c;无需手写节假日集合列表 1.HolidayUtil工具类 import com.alibaba.fastjson.JSONObject; import com.fasterxml.jackson.data…

DataGemma:谷歌大模型

诸神缄默不语-个人CSDN博文目录 DataGemma是谷歌出的大模型&#xff0c;是gemma 2的升级版&#xff0c;主要亮点是基于检索解决幻觉问题。 在huggingface和kaggle上均可下载模型权重。 检索数据源是Google’s Data Commons知识图谱。 官方博客&#xff1a;https://blog.googl…

Centos redis下载安装以及redis manager连接详细教程

一、redis下载以安装&#xff1a; 1.切换到home目录下 cd /home&#xff08;/是根目录&#xff0c;./是当前目录 ../是父目录&#xff09; 2.执行wget http://download.redis.io/releases/redis-5.0.2.tar.gz&#xff08;这里&#xff0c;不知道为什么安装6开头的版本在make的…

定制智慧科技展厅方案:哪些细节是成功的秘诀?

随着数字科技浪潮的迅猛推进&#xff0c;智慧科技展厅跃升为科技成果展示与技术对话的前沿阵地。其策划与实施方案因而显得尤为关键。在此过程中&#xff0c;精雕细琢每一环节&#xff0c;确保创意与技术的无缝对接&#xff0c;成为不可或缺的要点。现在&#xff0c;让我们深入…

CS创世8GB SD NAND的低功耗特性

在电子设备不断追求低功耗的今天&#xff0c;CS创世半导体的8GB SD NAND芯片以其低功耗特性脱颖而出。这款芯片的读写电流仅为15mA&#xff0c;相较于同类产品&#xff0c;其功耗显著降低&#xff0c;这不仅延长了设备的使用时间&#xff0c;还减少了对电池的依赖。这种低功耗特…

HDMI20协议解析_Audio_Sample

HDMI20协议解析_Audio_Sample 1.版本说明 日期作者版本说明202409XX风释雪初始版本 2.概述 当通过HDMI传输音频信号时&#xff0c;Audio_Sample是必须要传输的数据包之一&#xff1b; 通过前端硬件或软件收到PCM原始音频数据后&#xff0c;需要通过Audio_Sample packet发送给…

跟着B战学习JAVA面试八股文

学习链接&#xff1a;https://www.bilibili.com/video/BV1gm411S7EX/?spm_id_from333.337.search-card.all.click&vd_sourceefbaa07876b231ae3225ba8999116807 创建线程的几种方式&#xff1f; 继承Thread类实现Runnable接口实现Callable接口通过线程池来创建线程 为什么…

fiddler抓包09_过滤站点请求

课程大纲 1、 界面 Fiddler列表默认显示所有请求&#xff0c;可以设置过滤&#xff0c;按照规则只显示指定的请求。 界面介绍&#xff1a; “Use Filters”&#xff1a;过滤功能开关。勾选&#xff0c;开启过滤&#xff1b;反之不开启。 “Hosts”&#xff1a;根据站点&#xf…

免费ppt模板哪里找?职场必备这些利器

一眨眼&#xff0c;9月份的尾声渐近&#xff0c;无论是学生还是职场人士&#xff0c;都开始准备着新一轮的演讲和报告。在这个忙碌的时期&#xff0c;一份精美的PPT模板能够大幅提升你的工作效率&#xff0c;让你的演示更加引人入胜。 不用担心高昂的版权费用&#xff0c;市场…

LPDDR4芯片学习(一)——基础知识与引脚定义

一、基础知识 01 dram基本存储单元 当需要将一位数据存储到DRAM中时&#xff0c;晶体管会充电或放电电容。充电的电容表示逻辑高&#xff08;1&#xff09;&#xff0c;放电的电容表示逻辑低&#xff08;0&#xff09;。由于电容会随着时间泄漏电荷&#xff0c;因此需要定期刷…

接口测试Postman关联,断言,前置,参数化用法

一、Postman下载 我们直接搜索Postman官网下载即可 Postman API Platformhttps://www.postman.com/ 二、使用 下载安装完成后我们需要登录注册&#xff0c;按照Postman的指示进行注册登录&#xff0c;不登陆可能有些功能无法使用 登陆完成我们就可以开始对接口进行测试了 …

用于体积医学图像分割的跨视角差异依赖网络|文献速递--基于多模态-半监督深度学习的病理学诊断与病灶分割

Title 题目 Cross-view discrepancy-dependency network for volumetric medical image segmentation 用于体积医学图像分割的跨视角差异依赖网络 01 文献速递介绍 医学图像分割的目标是通过为每个像素分配语义类别&#xff0c;从原始图像中描绘出受试者的解剖结构&#x…

Python项目的质量保证

首先来打个不恰当比喻&#xff0c;你在市场上购买苹果时&#xff0c;挑选最好的苹果相当简单。你可以通过触摸它们来挑选&#xff0c;选择最好的颜色、成熟度和没有可见的伤疤。这个过程称为质量控制——你只选择满足你要求的优质产品。当分拣站里有大量苹果时&#xff0c;事情…

利用F.interpolate()函数进行插值操作

函数简介 功能&#xff1a; 利用插值方法&#xff0c;对输入的张量数组进行上\下采样操作&#xff0c;换句话说就是科学合理地改变数组的尺寸大小&#xff0c;尽量保持数据完整。 torch.nn.functional.interpolate(input, sizeNone, scale_factorNone, modenearest, align_c…

Node.JS有什么用?给谁用?怎么学?通俗易懂,超级详细!

现在&#xff0c;nodejs主要是前端的小伙伴来用的。前端小伙伴也不用说去怎么学node&#xff0c;而是把node当做是一个环境。我们利用这个环境去搭建上层的一些应用&#xff0c;去使用一些工具。就像学习Windows一样&#xff0c;我们没有必要深入了解Windows的每一个细节&#…

【解密!】终端安全管理软件究竟是什么?一文给您揭晓答案!

在数字化时代&#xff0c;随着企业信息化程度的不断提升&#xff0c;网络安全问题日益凸显。 终端作为网络连接的最后一环&#xff0c;其安全性直接关系到整个网络体系的安全与稳定。 那么&#xff0c;终端安全管理软件究竟是什么呢&#xff1f;本文将为您深入解析这一重要话…

Image matting入门

概念 matting就是扣图&#xff0c;本质是预测前景与背景&#xff0c;将前景扣出来。主要应用于影视行业&#xff0c;如拍电影绿幕扣图。和图像分割的区别在于多一个模糊地带&#xff0c;非01分类&#xff0c;变成了预测alpha通道。前景F&#xff0c;背景B&#xff0c;图像I可以…

数据结构与算法——Java实现 11.习题——有序链表去重

目录 82. 删除排序链表中的重复元素 II 方法1 方法2 要知道&#xff0c;每一颗钻石在被发现前&#xff0c;都要经受埋藏尘埃的寂寞时光 —— 24.9.23 82. 删除排序链表中的重复元素 II 给定一个已排序的链表的头 head &#xff0c; 删除原始链表中所有重复数字的节点&#xff0…