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

目录

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

题目描述:

实现代码与解析:

遍历:

原理思路:


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

题目描述:

        给你一个下标从 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 <= text.length <= 105
  • pattern.length == 2
  • text 和 pattern 都只包含小写英文字母。

实现代码与解析:

遍历:

class Solution {public long maximumSubsequenceCount(String text, String pattern) {int n = text.length();long res = 0;int cnt0 = 0;int cnt1 = 0;for (int i = 0; i < n; i++) {if (text.charAt(i) == pattern.charAt(1)) {cnt1++;res += cnt0;}if (text.charAt(i) == pattern.charAt(0)) {cnt0++;}}return res += Math.max(cnt0, cnt1);}
}

原理思路:

        遍历,直到遇到p[1]那么就可以和前面的p[0]构成子序列,res直接加上前面的p[0]的数量即可。

        最后插入一个字符,看是p[0]多还是p[1]多加上即可,放在前面或者后面构成子序列。

        注意点:if要先判断p[1],因为有可能p字符串是aa这种重复字符构成的,res要加上。

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

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

相关文章

身为程序员,转行请慎重:考虑以下几点再决定是否转向大模型领域

在决定从程序员转型到大模型领域之前&#xff0c;有几个关键点需要认真考虑。这些因素将帮助你更全面地评估这一转变是否适合你的职业规划和个人情况。 个人兴趣与激情 自我反思&#xff1a;你对人工智能、深度学习和自然语言处理等领域是否有浓厚的兴趣&#xff1f;兴趣是最好…

35岁程序员转行大模型岗位:详细学习路线,从零基础到精通2024最新

随着人工智能&#xff08;AI&#xff09;和深度学习技术的飞速发展&#xff0c;越来越多的技术人才开始考虑转向这一前沿领域。对于已经拥有丰富编程经验但希望转型到大模型开发领域的35岁程序员来说&#xff0c;虽然面临一定的挑战&#xff0c;但也具备了坚实的基础。本文将提…

C++(学习)2024.9.24

目录 容器 1.标准模板库STL 2.概念 3.顺序容器 &#xff08;1&#xff09;array数组 &#xff08;2&#xff09;vector向量 &#xff08;3&#xff09;list列表 &#xff08;4&#xff09;deque 队列 4.关联容器 5.迭代器 面向对象核心 继承 概念 构造函数 1.派生…

HTML段落,换行,水平线标签与其属性

段落标签 段落标签是通过<p> </p>来定义的。 </head> <body><p>这是一个段落</p> </body> </html> 换行标签 换行标签通过<br>来定义&#xff0c;换行标签可以在不产生新的段落的情况下进行换行操作。 </head> …

更新C语言题目

1.以下程序输出结果是() int main() {int a 1, b 2, c 2, t;while (a < b < c) {t a;a b;b t;c--;}printf("%d %d %d", a, b, c); } 解析:a1 b2 c2 a<b 成立 ,等于一个真值1 1<2 执行循环体 t被赋值为1 a被赋值2 b赋值1 c-- c变成1 a<b 不成立…

RTE大会报名丨 重塑语音交互:音频技术和 Voice AI,RTE2024 技术专场第一弹!

Voice AI 实现 human-like 的最后一步是什么&#xff1f; AI 视频爆炸增长&#xff0c;新一代编解码技术将面临何种挑战&#xff1f; 当大模型进化到实时多模态&#xff0c;又将诞生什么样的新场景和玩法&#xff1f; 所有 AI Infra 都在探寻规格和性能的最佳平衡&#xff0…

Java—反射机制详解

介绍反射 反射的基本概念 反射&#xff08;Reflection&#xff09;是Java语言中的一种机制&#xff0c;它允许程序在运行时检查和操作类、接口、字段和方法等类的内部结构。通过反射&#xff0c;你可以在运行时获取类的信息&#xff0c;包括类的构造器、字段、方法等&#xf…

服务器安装pytorch_geometric torch_scatter踩坑记录

conda create -n pyg python3.8.12 pip install torch1.13.0安装的版本如下 pip install torch-scatter pip install torch-sparse pip install torch-cluster pip install torch-spline-conv pip install torch-geometric2.2.0 pip install ipykernel python -m ipykernel i…

Java—注解机制详解

概念 注解是类的组成部分&#xff0c;可以为类携带额外的信息&#xff0c;提供一种安全的注释标记机制&#xff0c;用于将任何信息或元数据与程序元素&#xff08;如类、方法、成员变量等&#xff09;关联。 注解是供编译器或JVM使用的&#xff0c;编译器或JVM可以根据注解执…

云岚到家 第一天实战总结

为什么使用post发送请求&#xff0c;参数依旧会被拼接带url上呢&#xff1f;这应该就是param 与data传参的区别。即param传参数参数会被拼接到url后&#xff0c;data会以请求体传递 不一定post发送请求&#xff0c;数据一定在请求体中&#xff0c;主要是看数据的格式。 后端c…

c++924

2 #include <iostream> #include <cstring>using namespace std;class MyString { private:char *str; // 记录C风格的字符串int size; // 记录字符串的实际长度public:// 定义无参构造MyString() : size(0) {str new char[1];str[0] \0;cou…

《深度学习》—— 神经网络中的数据增强

文章目录 一、为什么要进行数据增强&#xff1f;二、常见的数据增强方法1. 几何变换2. 颜色变换3. 尺寸变换4. 填充5. 噪声添加6. 组合变换 三、代码实现四、注意事项五、总结 一、为什么要进行数据增强&#xff1f; 神经网络中的数据增强是一种通过增加训练数据的多样性和数量…

Python接口自动化测试输出日志到控制台和文件

一、日志的作用 一般程序日志出自下面几个方面的需求&#xff1a; 1. 记录用户操作的审计日志&#xff0c;甚至有的时候就是监管部门的要求。 2. 快速定位问题的根源 3. 追踪程序执行的过程。 4. 追踪数据的变化 5. 数据统计和性能分析 6. 采集运行环境数据 一般在程序上线之后…

2024 年 8 月公链行业研报:Layer 1、比特币 Layer 2 和以太坊 Layer 2 趋势分析

作者&#xff1a;Stella L (stellafootprint.network) 数据来源&#xff1a;Footprint Analytics 公链研究页面 8 月&#xff0c;加密货币市场波动剧烈&#xff0c;比特币和以太坊均遭遇了明显下跌。Layer 1 区块链普遍遭受市场颓势&#xff0c;然而&#xff0c;Tron 却逆势…

考研数据结构——C语言实现插入排序

插入排序是一种简单直观的比较排序算法&#xff0c;它的工作原理是通过构建有序序列&#xff0c;对于未排序数据&#xff0c;在已排序序列中从后向前扫描&#xff0c;找到相应位置并插入。插入排序在实现上&#xff0c;通常采用in-place&#xff08;原地排序&#xff09;&#…

【python篇】python pickle模块一篇就能明白,快速理解

持久性就是指保持对象&#xff0c;甚至在多次执行同一程序之间也保持对象。通过本文&#xff0c;您会对 Python对象的各种持久性机制&#xff08;从关系数据库到 Python 的 pickle以及其它机制&#xff09;有一个总体认识。另外&#xff0c;还会让您更深一步地了解Python 的对象…

【深度】边缘计算神器之数据网关

分布式计算、云边协同、互联互通是边缘计算设备的三项重要特征。 边缘计算设备通过分布式计算模式&#xff0c;将数据处理和分析任务从中心化的云平台下放到设备网关&#xff0c;即更接近数据源的地方&#xff0c;从而显著降低了数据传输的延迟&#xff0c;提高了响应速度和处…

算法4-----综合训练(3)

一&#xff1a;优美的排列 题目&#xff1a; 有1~n的n个整数&#xff0c;用这些数构造一个数组perm&#xff0c;只要构造的数组满足以下两个条件&#xff1a; &#xff08;1&#xff09;i可以被perm[i]整除 &#xff08;2&#xff09;perm[i]可以被i整除 返回其能构造出的…

影刀RPA应用迁移应用复制完整步骤-本地工具

影刀应用迁移工具本地版 不需要输入影刀的用户名和密码就能实现应用的迁移 依赖本地电脑中登录的账号 使用方法 打开软件需要激活,请联系: 左侧选择一个账号选择需要迁移的应用选择目标账号选择要替换的应用 需要用目标账号创建一个空应用,然后在这一步选择点击替换 Q&A…

3. 轴指令(omron 机器自动化控制器)——>MC_MoveRelative

机器自动化控制器——第三章 轴指令 5 MC_MoveRelative变量▶输入变量▶输出变量▶输入输出变量 功能说明▶指令详情▶时序图▶重启运动指令▶多重启动运动指令▶异常 MC_MoveRelative 指定自指令当前位置起的移动距离&#xff0c;进行定位。 指令名称FB/FUN图形表现ST表现MC…