【基础算法】双指针----字符串删减

news2024/9/27 9:30:13

🌹作者:云小逸
📝个人主页:云小逸的主页
📝Github:云小逸的Github
🤟motto:要敢于一个人默默的面对自己,强大自己才是核心。不要等到什么都没有了,才下定决心去做。种一颗树,最好的时间是十年前,其次就是现在!学会自己和解,与过去和解,努力爱自己。==希望春天来之前,我们一起面朝大海,春暖花开!==🤟
👏专栏:C++👏 👏专栏:Java语言👏👏专栏:Linux学习👏
👏专栏:C语言初阶👏👏专栏:数据结构👏👏专栏:备战蓝桥杯👏

文章目录

  • 前言
  • 字符串删减:
    • 题目:
    • 输入格式
    • 输出格式
    • 数据范围
    • 输入样例1:
    • 输出样例1:
    • 输入样例2:
    • 输出样例2:
    • 输入样例3:
    • 输出样例3:
    • 做题思路:
    • 代码:
    • 代码解析:
  • 最后


前言

今天这篇文章我们学习双指针,这次要讲解双指针的经典问题:字符串删减。码字不易,请多多支持!
——————————————————————————————

首先先写上几句话:献给坚持创作的我和点开这篇文章希望进步的你
1.也许你要早上七点起床,晚上十二点睡觉,日复一日,踽踽独行。但只要笃定而努力地活着,即使生不逢时,你人生最坏的结果,也只是大器晚成。

2.你可以讨厌某种东西,但你必须允许它的存在和别人喜欢它。

3.爱你的人会让你变成更好的人。

4.这一生的温柔记得给父母留一份。

5.我们都各自发光,不必去吹灭别人的灯。

字符串删减:

题目:

给定一个由 n 个小写字母构成的字符串。

现在,需要删掉其中的一些字母,使得字符串中不存在连续三个或三个以上的 x。

请问,最少需要删掉多少个字母?

如果字符串本来就不存在连续的三个或三个以上 x,则无需删掉任何字母。

输入格式

第一行包含整数 n。

第二行包含一个长度为 n 的由小写字母构成的字符串。

输出格式

输出最少需要删掉的字母个数。

数据范围

3≤n≤100

输入样例1:

6
xxxiii

输出样例1:

1

输入样例2:

5
xxoxx

输出样例2:

0

输入样例3:

10
xxxxxxxxxx

输出样例3:

8

做题思路:

从题意中我们可以知道我们一定不会删除之外的字符
在这里插入图片描述
从下图可以知道如果存在多段子串,那它们必是独立的
在这里插入图片描述
这样我们就可以分别考虑它们了,分别计算出它们要删减的字符个数,最终计算即可:
在这里插入图片描述
对于某一段进行讨论:
在这里插入图片描述
K<3,不需要删减;
K>=3,删减K-2个字符。
计算每一段的长度,那就需要用到双指针了
首先从第一个数字开始,不是X则下一个,是X则从它开始计数,直到第一个不是X的数即可。

代码:

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

int n;

int main()
{
    int n;
    string str;
    cin >> n >> str;

    int res = 0;
    for (int i = 0; i < n; i ++ )//从开始枚举,
        if (str[i] == 'x')//当遇到第一个为x的时候,计数
        {
            int j = i + 1;
            while (j < n && str[j] == 'x') j ++ ;
            res += max(j - i - 2, 0);//j-i-2是要删减字符的个数
            i = j - 1;
        }

    cout << res << endl;
    return 0;
}

代码解析:

  for (int i = 0; i < n; i ++ )//从开始枚举,
        if (str[i] == 'x')//当遇到第一个为x的时候,计数
        {
            int j = i + 1;
            while (j < n && str[j] == 'x') j ++ ;
            res += max(j - i - 2, 0);//j-i-2是要删减字符的个数
            i = j - 1;
        }

最后

十分感谢你可以耐着性子把它读完和我可以坚持写到这里,送几句话,对你,也对我:

1.应该是从喜欢里得到力量和快乐,而不是花光了力量和快乐去喜欢。

2.一定要狠下心来努力变成一个很厉害的人,厉害到有一天,你可以随时离开那些令你不舒服的圈子和人,让他们通通羡慕不已。你在四五月做的事情,在八九月自然会有答案。

3.你一定要努力,当你接触优秀的人时,你会发现别人不仅有钱,还穿的好看,打扮时尚,阳光且温柔,自律且上进,各方面都很优秀。
难熬的日子总会过去的,不信你回头看看,你都已经在不知不觉中熬过了很多苦难,所以真的不必慌张。

4.该翻脸的时候就翻脸,你好说话他还以为你好说话,过分的善良只会让人觉得你没有价值,他会得寸进尺的欺负你,你还要对他低声下气,难道他就天生富贵高人一等吗?
你不敢翻脸,是你自卑懦弱无能,对于不尊重你,不理解你的人,别客气。

5.你讨厌父亲的平庸,却不知道,他也曾是个怀揣梦想的少年。
你嫌弃母亲的唠叨,却不记得,她也曾是个对镜贴花黄的姑娘。
你是第一次当孩子,他们也是第一次当父母。世界上没有那么多极端可恶或者完美无缺的父母,他们也只是有着各种缺点的普通人而已。
不必总是想原生家庭欠了我什么,恰恰是原生家庭帮助我们看清自己修补自己,而非用来怨恨。毕竟,我们终其一生都要为自己负责。

最后如果觉得我写的还不错,请不要忘记点赞✌,收藏✌,加关注✌哦(。・ω・。)

愿我们一起加油,奔向更美好的未来,愿我们从懵懵懂懂的一枚菜鸟逐渐成为大佬。加油,为自己点赞!

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

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

相关文章

Java查漏补缺(13)泛型概述、使用泛型举例、自定义泛型结构、泛型在继承上的体现、通配符的使用

Java查漏补缺&#xff08;13&#xff09;泛型概述、使用泛型举例、自定义泛型结构、泛型在继承上的体现、通配符的使用本章专题与脉络1. 泛型概述1.1 生活中的例子1.2 泛型的引入2. 使用泛型举例2.1 集合中使用泛型2.1.1 举例2.1.2 练习2.2 比较器中使用泛型2.2.1 举例2.2.2 练…

Vue下载安装步骤的详细教程(亲测有效) 2 安装与创建默认项目

上篇请移步到Vue下载安装步骤的详细教程(亲测有效) 1_水w的博客-CSDN博客 上一篇博文已经对Node.js的安装与配置进行了详细介绍。 另外&#xff1a;文中项目存放的路径及项目名称可根据自身实际情况进行更改。 目录 三、Vue安装配置 1、搭建Vue脚手架 2、通过NPM安装Vue …

二手商品交易网站

技术&#xff1a;Java、JSP等摘要&#xff1a;随着科学技术和信息通讯的飞速发展&#xff0c;Internet极大地丰富和改变着我们生活的各个行业。随着Internet的普及应用&#xff0c;人们可以跨越时间和空间的限制&#xff0c;足不出户便能通过网络完成信息交流&#xff0c;而完成…

Windows如何查看某个端口被占用的情况?

在工作中&#xff0c;有时会发现端口被占用的情况&#xff0c;导致软件报错或者服务无法启动等问题。在不知道具体哪个进程占用该端口号的情况下&#xff0c;我们可以用下面方法来查找。 举例&#xff1a;我现在发现8090端口被占用了&#xff0c;我现在需要找到并杀掉该进程。…

ICA简介:独立成分分析

1. 简介 您是否曾经遇到过这样一种情况&#xff1a;您试图分析一个复杂且高度相关的数据集&#xff0c;却对信息量感到不知所措&#xff1f;这就是独立成分分析 (ICA) 的用武之地。ICA 是数据分析领域的一项强大技术&#xff0c;可让您分离和识别多元数据集中的底层独立来源。 …

嵌入式 STM32 红外遥控

目录 红外遥控 NEC码的位定义 硬件设计 软件设计 源码程序 红外遥控 红外遥控是一种无线、非接触控制技术&#xff0c;具有抗干扰能力强&#xff0c;信息传输可靠&#xff0c;功耗低&#xff0c;成本低&#xff0c;容易实现等显著的特点&#xff0c;被诸多电子设备特别…

二进制、十六进制和浮点数ASCII的转换机制--------IEEE754

我在使用GPS时&#xff0c;通过网口接收到了BESTPOS格式的输出结果&#xff0c;它以16进制表示。 当前常见的GPS都以ASCII表示&#xff0c;例如我们在串口助手中可以选择输出类型为ASCII或者是16进制&#xff0c;那么说明它们中见肯定存在某种转换机制&#xff0c;既可以表示出…

javaEE 初阶 — 网络层 IP 协议 的功能 — 路由选择与地址管理

文章目录IP 协议的功能1.IP 协议的路由选择2.IP 协议的地址管理2.1 网络号与主机号的分界2.2 特殊 IPIP 协议的功能 网络层主要做两件事&#xff1a; 地址管理 路由选择 网络层的代表就是 IP 协议 网络层主要是负责管理路由设备&#xff0c;要从两个结点之间找到一条具体的…

01 presto 概述: 特性 优缺点 场景 架构

文章目录1. Presto是什么2. Presto优缺点2.1. 优点2.2. 缺点3. Presto适用场景4. Presto数据模型5. Presto 架构5.1 执行流程关键词&#xff1a;MPP 多源 即席查询 统一SQL执行引擎 分布式SQL引擎 数据分析 1. Presto是什么 Presto是一款开源的分布式并行计算(MPP)引擎&#x…

Hive基础命令

一、Hive其他命令 1、在hive cli命令窗口中如何查看hdfs文件系统 dfs -ls /;2、在hive cli命令窗口中如何查看本地文件系统 !ls /opt;二、Hive数据类型 1、基本数据类型 红标为常用的数据类型&#xff1b; 对于Hive的String类型相当于数据库的varchar类型&#xff0c;该类型…

python之web自动化测试框架

梳理下搭建web自动化框架的流程&#xff1a; 创建目录&#xff1a; cases&#xff1a;存放测试用例&#xff0c;unittest框架要求用例名必须以test开头&#xff0c;所以命名test_case.py test_case.py代码如下&#xff1a;继承unittest.TestCase类下面的方法setupclass(),te…

优思学院|精益生产现场管理的要素是什么?

精益生产的目的是通过消除3M来实现生产过程的优化和精简。3M指的是 "Muda"、"Muri"、"Mura"&#xff0c;这三个词来自于日本&#xff0c;代表了生产过程中的浪费、超负荷和不平衡。 因此&#xff0c;要消除3M&#xff0c;优思学院认为企业精益生…

qt-c++进阶1-window、linux下获取本机所有网卡ip信息、根据网卡名获取ip地址。

系列文章目录 例如&#xff1a;第一章 主要是通过qt-c实现获取本机电脑的网卡信息或者是IP信息 文章目录系列文章目录前言一、获取本机网卡IP信息1.1 获取ip地址方法1.2 代码实例总结前言 总结c获取本机网卡信息的方法 第一章&#xff1a;适用于windows操作系统、linux操作系…

中级嵌入式系统设计师2015下半年下午应用技能试题

中级嵌入式系统设计师2015下半年下午试题 试题一 阅读以下关于某嵌入式系统设计的说明,回答下列问题。 [说明] 某公司承接了某嵌入式系统的研制任务。该嵌入式系统由数据处理模块、系统管理模块、FC网络交换模块和智能电源模块组成,系统组成如图1所示。数据处理模块处理系统…

Linux 练习三 (Makefile工程管理器)

文章目录Makefile工程管理器第一个makefile&#xff1a;编写两个.c源文件&#xff0c;并且让一个调用另外一个&#xff0c;使用makefile建立依赖&#xff0c;生成可执行文件&#xff0c;并执行。伪目标变量预定义变量和自动变量通配符和模式匹配内置函数循环指定makefile文件综…

js数组格式字符串处理

文章目录一. 前言二. 数组还原1. 方法一2. 方法二3. 方法三4. 方法四一. 前言 由于数据传输的问题我们常常在请求后拿到数组格式的字符串&#xff0c;一般情况分为以下四种&#xff1a; let str1 ["a","b","c","d"]; // 类型一 let…

【异常解决】The coordinator is not available

问题 最近上线跑了一个flink任务&#xff0c;运行不久&#xff0c;就会挂掉&#xff0c;初步查看日志报错如下 WARN org.apache.flink.connector.kafka.source.reader.KafkaSourceReader [] - Failed to commit consumer offsets for checkpoint 1 org.apache.kafka.clients…

IGBT窄脉冲现象

IGBT窄脉冲现象 tips&#xff1a;资料来自知乎 英飞凌《IGBT窄脉冲现象解读》 IGBT窄脉冲现象 1.什么是窄脉冲现象? 2.窄脉冲现象的原因 3.双脉冲测试IGBT窄脉冲开通 4.FWD窄脉冲开通 1.什么是窄脉冲现象? IGBT作为一种功率开关&#xff0c;从门级信号到器件开关过程…

用Python制作邮件检测器

github地址&#xff1a; https://github.com/CaLlMeErIC/MailDetective 因为需求需要写一个简单的邮件检测系统的框架&#xff0c;这里记录下思路 首先第一反应,这个检测系统不应该是各个邮件收件系统都有自带的吗&#xff0c;于是搜索了下是否有相关的邮件检测开源软件&#…

行测-判断推理-图形推理-样式规律-属性规律-对称性

中心对称&#xff1a;可以看作&#xff0c;图上的每一个点&#xff0c;都能关于中心点&#xff0c;在图上找到另一个对称的点五个图都是轴对称图形&#xff0c;只有答案C是轴对称图形选C都是中心对称图形选A1 3 5中心对称2 4 6轴对称中心对称选B对称轴顺时针45旋转选A对称轴的数…