LeetCode 每日一题 ---- 【2207. 字符串中最多数目的子序列】

在这里插入图片描述

LeetCode 每日一题 ---- 【2207. 字符串中最多数目的子序列】

  • 2207.字符串中最多数目的子序列
    • 方法:贪心 + 一次遍历

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

方法:贪心 + 一次遍历

在这里插入图片描述

从题意中可以看出来,对于 pattern.charAt(0) 一定是插入到最左侧是最优解
对于 pattern.charAt(1) 一定是插入到最右侧是最优解

代码没有特判 a=b 的情况,要先更新答案,再更新 prea,这可以保证更新答案时 prea 表示的是当前字母左边的 a 的出现次数,prea 尚未计入当前字母。

//给你一个下标从 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 <= 10⁵ 
// pattern.length == 2 
// text 和 pattern 都只包含小写英文字母。 
// 
//
// Related Topics 贪心 字符串 前缀和 👍 42 👎 0//leetcode submit region begin(Prohibit modification and deletion)
class Solution {public long maximumSubsequenceCount(String text, String pattern) {// aabab// 为了保证最优解,肯定是要在最后或者最前插入,因为这样插入的字符可以和所有符号条件的字符进行匹配char a = pattern.charAt(0);char b = pattern.charAt(1);int prea = 0;int preb = 0;long result = 0;for (char c : text.toCharArray()) {if (c == b) {result += prea;preb++;}if (c == a) {prea++;}}return result + Math.max(prea, preb);}
}
//leetcode submit region end(Prohibit modification and deletion)

时间复杂度:
O(n)

空间复杂度:
O(1)

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

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

相关文章

记一次Mac 匪夷所思终端常用网络命令恢复记录

一天莫名奇妙发现ping dig 等基础命令都无法正常使用。还好能浏览器能正常访问&#xff0c;&#xff0c;&#xff0c;&#xff0c; 赶紧拿baidu试试^-^ ; <<>> DiG 9.10.6 <<>> baidu.com ;; global options: cmd ;; connection timed out; no serve…

Mysql——初识Mysql

目录 数据库基础 创建数据库 服务器&#xff0c;数据库&#xff0c;表关系 数据逻辑存储 MySQL架构 SQL分类 存储引擎 mysql服务端是一个网络服务器&#xff0c;采用的是TCP协议在应用层 &#xff0c;mysql有自己的协议。 数据库基础 mysql不是数据库&#xff0c;是mysql的…

信息安全工程师(16)密码学概况

前言 密码学是研究编制密码和破译密码的技术科学&#xff0c;它涵盖了加密技术和解密技术的各个方面&#xff0c;是现代信息安全的核心组成部分。 一、定义与基本概念 定义&#xff1a;密码学是研究如何隐密地传递信息的学科&#xff0c;主要涉及保密通信和数字签名两个方面。它…

【工具】语音朗读PDF的免费工具

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 背景介绍 看累了&#xff0c;不想看&#xff0c;能不能读给我听&#xff01; 工具介绍 Natural Readers Free Text to Speech Online with Realistic…

Ubuntu 16.04安装填坑记录

一. 问题描述&#xff1a; &#xff08;1&#xff09;Ubuntu 16.04使用USB启动盘安装时&#xff0c;出现"try ubuntu without installation"或“install ubuntu”选择&#xff0c;Enter选择安装后&#xff0c;显示器黑屏无任何显示。 原因分析&#xff1a; 显示黑…

Python电能质量扰动信号分类(一)基于LSTM模型的一维信号分类

引言 本文基于Python仿真的电能质量扰动信号&#xff0c;先经过数据预处理进行数据集的制作和加载&#xff0c;然后通过Pytorch实现LSTM模型对扰动信号的分类。Python仿真电能质量扰动信号的详细介绍可以参考下文&#xff08;文末附10分类数据集&#xff09;&#xff1a; Pyth…

8.11Zero Crossing Detection (零交叉检测)

基本概念 零交叉检测是一种基于二阶导数的边缘检测方法&#xff0c;它通过查找二阶导数过零点来定位边缘。 注意: OpenCV没有直接提供这种检测方法&#xff0c;但可以通过结合其他函数来实现。 在OpenCV中&#xff0c;基于C的Zero Crossing Detection&#xff08;零交叉检测&…

项目第一弹:RabbitMQ介绍

RabbitMQ介绍 一、前言1. 回顾生产者消费者模型2.忙闲不均与负载均衡3.改造线程池使其支持负载均衡4.MQ的引入 二、MQ的介绍1.应用/模块解耦&#xff0c;且提高容错性2.异步处理3.流量削峰填谷4.分布式事务1.两阶段提交协议&#xff08;2PC协议&#xff09;2.事务消息&#xff…

《动手学深度学习》笔记2.1——神经网络从基础→进阶 (层和块 - 自定义块)

目录 0. 前言 原书正文&#xff08;第五章&#xff09; 第五章 - 第一节 - 层和块 - 自定义块 1. Sequential() PyTorch高级API 2. MLP() 无传入参数 3. MySequential() 传入任意层(块) 4. FixedHiddenMLP() 无传入参数-固定隐藏层 5. NestMLP() 传入嵌套块-多次嵌套 …

【目标检测】隐翅虫数据集386张VOC+YOLO

隐翅虫数据集&#xff1a;图片来自网页爬虫&#xff0c;删除重复项后整理标注而成 数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;386 标注…

C++核心编程和桌面应用开发 第五天(new delete malloc 静态成员 静态成员函数 单例)

目录 1.new运算符 1.1开批数组 2.delete运算符 3.malloc和new的区别 4.万能指针接收new对象 5.静态成员 6.静态成员函数 7. 单例 7.1概念 7.2常见场景 1.new运算符 C中用new进行动态内存分配&#xff0c;new会在调用构造函数之前&#xff0c;成功进行内存分配&#x…

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

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

RabbitMQ是什么?RabbitMQ简介

一&#xff1a;技术背景 假如我们有一个支付服务&#xff0c;支付服务的业务逻辑是&#xff1a;首先支付扣减余额&#xff0c;更新支付单状态&#xff0c;更新订单状态&#xff0c;发短信&#xff0c;给这个用户增加积分。在这个场景下&#xff0c;如果我们使用同步调用通信&am…

vscode将c++项目打包exe进行反汇编练习

vscode将c&c项目打包成控制台exe全过程&#xff0c;进行c反汇编练习&#xff0c;反汇编只有不断的练习才能巩固、积累经验。 一、打包exe 创建新项目&#xff0c;选择c&#xff0c;Windows桌面向导 直接点击创建 直接点确定 直接点击运行即可&#xff0c;可以看到我的exe…

15 跨组件通信依赖注入provide和inject

Provide / Inject 通常&#xff0c;当我们需要从父组件向子组件传递数据时&#xff0c;我们使用 props。想象一下这样的结构&#xff1a;有一些深度嵌套的组件&#xff0c;而深层的子组件只需要父组件的部分内容。在这种情况下&#xff0c;如果仍然将 prop 沿着组件链逐级传递…

ROS2 技术及分布式介绍

PC端开发环境搭建 WSL环境搭建 https://www.guyuehome.com/46574 In Windows 11 builds that support wslg: 1. Open up powershell and enter wsl --install ROS2系统安装 方法一 • 设置编码 Bash $ sudo apt update && sudo apt install loca…

EffcientNetV2(2021):更快、更强、效率更高的EffcientNet!

EffcientNetV2: Smaller Models and Faster Training EfficientNetV2&#xff1a;更小的模型和更快的训练 论文地址&#xff1a; https://arxiv.org/abs/2104.00298 本文介绍了 EfficientNetV2&#xff0c;这是一个新的卷积网络系列&#xff0c;与以前的模型相比&#xff0c;它…

HDFS_API文件和文件夹

代码&#xff1a; Beforepublic void init() throws URISyntaxException, IOException {URI uri new URI("hdfs://master:9000");// 创建一个配置文件Configuration entries new Configuration();// 获取到了客户端对象 // entries.set("dfs.replicat…

【嵌入式linux开发】SPI设备文件读取ICM-40609D传感器

【嵌入式linux开发】SPI设备文件操作ICM-40609D传感器 前言一、数据手册浅读二、linux系统下使用SPI设备文件操作ICM-40609-D三、ros1发布imu数据3.1、创建ros1工作空间3.2、数据发布节点代码 前言 在本篇博客中&#xff0c;将从ICM-40609-D传感器的数据手册出发&#xff0c;简…

公安局软件管理平台建设方案和必要性,论文-3-———未来之窗行业应用跨平台架构

三、平台功能设计 四、技术架构 1. 前端界面 - 采用简洁、易用的设计风格&#xff0c;适应不同终端设备的访问。 - 基于 HTML5、CSS3 和 JavaScript 构建。 2. 后端服务 - 选择主流的 Web 开发框架&#xff0c;如 未来之窗跨平台架构&#xff0c;VUE。 - 数据库…