Leetcode 2207:字符串中数目最多的子字符串

news/2025/3/28 16:21:17/

 做这道题,走了一个小时的弯路,大冤种是谁我不说🐧 

事情是这样的,大早起八点多钟没啥思路,吃完早饭还困着呢。迷迷糊糊我就想着用C++string的各种函数来解决这道题:

先利用 find 函数确定两字符pattern[0] pattern[1] 在字符串中出现的首位置,之后再利用substr截取字符串,分别统计两字符出现的次数(count函数)。

兜兜转转,又要注意下标又要定义很多子字符串。

代码冗长,本人也很慌张,啊啊啊怎么会如此麻烦且没有技术含量???


嗯,一定是方法错了。

我开始往算法思想上靠近:由于题目叙述说只能插入一个字符,且要构成数目最多的子字符串,那么无非就两种情况下数目最大:

① pattern[0] 插入,且位于字符串头。

② pattern[1] 插入,且位于字符串尾

终于找到了正确的道路:贪心方法 遍历 即可

解题思路:

我们从头到尾开始遍历,设置两变量记录字符串中 pattern[0]  pattern[1]  的数目,遇到 pattern[0] 我们就让 cnt0++ ,遇到 pattern[1]  就让 cnt1++ 。且在遇到 pattern[1] 时,需要更新子字符串的数目,res+=cnt0

上代码:

class Solution {
public:long long maximumSubsequenceCount(string text, string pattern) {int cnt0=0,cnt1=0;long long res=0;int p=0;while(text[p]!='\0'){char c=text[p];if(c==pattern[1]){cnt1++;res+=cnt0;}if(c==pattern[0])cnt0++;p++;}res+=max(cnt1,cnt0);return res;}
};

Notes:

我们新时代的农民工,计数都喜欢从0开始嘛,所以在程序while循环中,我一开始是将 if(c==pattern[0]) 放在前面的,且第二个 if 前面加了 else ,结果是解答错误。原因是:

当 pattern[0]=pattern[1] 时,因为 res 有 +=cnt0 的操作,我们不能把 cnt0++ 放在前面,否则就会多加,例如:

                                                "aabbaca"

                                                "aa"

此时当每遍历到一个 a ,cnt0 都会多加1,不妨拿第一个 a 举例,此时没有满足题意的子字符串,但 res 会在这次遍历之后变成1。并且为了处理两字符相等的情况,第二个 if 不能加 else 。

终于写完啦! 撒花❀❀ 


http://www.ppmy.cn/news/759206.html

相关文章

Centos7镜像版本命名规则

例:CentOS-7-x86_64-Everything-2207-02.iso 1.CentOS-7指的是7.x版本; 2.x86_64指的是64位操作系统; 3.Everything指的是全功能版; 对应表如下 DVDNetInstallEverythingLiveGNOMELiveKDELiveCDMinimal标准版网络安装版全功能…

CentOS7.9.2009安装要点

ISO镜像地址 阿里云镜像源地址(默认选择): https://mirrors.aliyun.com/centos/7/isos/x86_64/,选择2207这个。 各个版本的ISO镜像文件说明: CentOS-7-x86_64-DVD-2207-02.iso # 标准安装版(推荐&#xf…

【多式联运】基于matlab遗传算法求解多式联运冷链运输成本优化问题【含Matlab源码 2207期】

一、联运运输简介 1 引言 运输问题(Transportation Problem)是一类特殊的线性规划问题,最早是由Hichcock于1941年提出的,由于它不仅能解决物资的合理调运和车辆的合理调度,而且许多实际问题如生产存储问题、工厂选址问题等经过适当变换后可转化为运输问题进行求解,一些理论问题…

ORCAP-2207

在用于博士的工程文件进行DRC检查时,出现ERROR(ORCAP-2207): Check Bus width mismatch 其他没有问题 60 https://zhidao.baidu.com/question/935609133093978452.html 本人最近在看于博士教学的cadence这个软件,但是用到他给的那些原理图中&#xff0c…

【算法题】2207. 字符串中最多数目的子字符串

插: 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 坚持不懈,越努力越幸运,大家一起学习鸭~~~ 题目: 给你一个下标从 0 开始的字符串 te…

Arxiv 2207 | LightViT: Towards Light-Weight Convolution-Free Vision Transformers

LightViT: 全局与局部的交互与强化 论文:https://arxiv.org/abs/2207.05557代码:https://github.com/hunto/LightViT 本文旨在改进轻量视觉Transformer模型的设计。 针对Transformer Block的改进 针对Self-Attention,在local attention计算得…

Arxiv 2207 | HorNet: Efficient High-Order Spatial Interactions with Recursive Gated Convolutions

HorNet:使用递归门控卷积构建高阶空间交互 论文:https://arxiv.org/abs/2207.14284代码:https://github.com/raoyongming/HorNet/blob/master/hornet.py解析:https://mp.weixin.qq.com/s/MyMIPv-bn9wVMLABurjOUA 这篇文章旨在使用…

VMware虚拟机搭建Linux CentOS7(详细图文讲解)

文章目录 前言一、VM虚拟机和Linux镜像文件下载1. 登录VM虚拟机官方地址:2. 安装VM虚拟机:3.Linux镜像文件下载地址各个版本的ISO镜像文件说明: 二、安装Linux1、打开虚拟机,点击创建2、安装步骤进行安装 三、设置虚拟机1、安装前…