当前位置: 首页 > news >正文

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

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

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

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

相关文章:

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

&#x1f339;作者:云小逸 &#x1f4dd;个人主页:云小逸的主页 &#x1f4dd;Github:云小逸的Github &#x1f91f;motto:要敢于一个人默默的面对自己&#xff0c;强大自己才是核心。不要等到什么都没有了&#xff0c;才下定决心去做。种一颗树&#xff0c;最好的时间是十年前…...

Billu靶场黑盒盲打——思路和详解

一、信息收集 1、探测内网主机IP可以使用各种扫描工具比如nmap&#xff0c;我这里用的是自己编写的。 nmap -n 192.168.12.0/24 #扫描IP&#xff0c;发现目标主机 2、先不着急&#xff0c;先收集一波它的端口&#xff08;无果&#xff09; nmap -n 192.168.12.136 -p 1-10000…...

【2363. 合并相似的物品】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给你两个二维整数数组 items1 和 items2 &#xff0c;表示两个物品集合。每个数组 items 有以下特质&#xff1a; items[i] [valuei, weighti] 其中 valuei 表示第 i 件物品的 价值 &#xff0c;we…...

【C++提高编程】C++全栈体系(二十四)

C提高编程 第三章 STL - 常用容器 九、map/ multimap容器 1. map基本概念 简介&#xff1a; map中所有元素都是pairpair中第一个元素为key&#xff08;键值&#xff09;&#xff0c;起到索引作用&#xff0c;第二个元素为value&#xff08;实值&#xff09;所有元素都会根…...

c++11 标准模板(STL)(std::unordered_set)(十一)

定义于头文件 <unordered_set> template< class Key, class Hash std::hash<Key>, class KeyEqual std::equal_to<Key>, class Allocator std::allocator<Key> > class unordered_set;(1)(C11 起)namespace pmr { templ…...

AI/CV大厂笔试LeetCode高频考题之基础核心知识点

AI/CV互联网大厂笔试LeetCode高频考题之基础核心知识点算法复习1、二叉树的遍历2、回溯算法3、二分搜索4、滑动窗口算法题5、经典动态规划6、动态规划答疑篇6.1、总结一下如何找到动态规划的状态转移关系7、编辑距离8、戳气球问题9、最长公共子序列 Longest Common Subsequence…...

华为OD机试题,用 Java 解【静态扫描最优成本】问题

最近更新的博客 华为OD机试题,用 Java 解【停车场车辆统计】问题华为OD机试题,用 Java 解【字符串变换最小字符串】问题华为OD机试题,用 Java 解【计算最大乘积】问题华为OD机试题,用 Java 解【DNA 序列】问题华为OD机试 - 组成最大数(Java) | 机试题算法思路 【2023】使…...

常见无线技术方案介绍

无线技术 无线网络大体有两种&#xff1a;WAN&#xff08;广域网&#xff09;、PAN&#xff08;个人区域网&#xff09;。 对于LoRa&#xff0c;NB-IoT&#xff0c;2G / 3G / 4G等无线技术&#xff0c;通常传输距离超过1 km&#xff0c;因此它们主要用于广域网&#xff08;WA…...

收获满满的2022年

收到csdn官方的证书&#xff0c;感谢官方的认可&#xff01;...

react的生命周期

目录 一、初始化阶段 constructor() static getDerivedStateFromProps() componentWillMount() / UNSAFE_componentWillMount() render()&#xff1a; componentDidMount() 二、运行阶段 componentWillUpdate() / UNSAFE_componentWillUpdate() render() getSnapsh…...

scanpy 单细胞分析API接口使用案例

参考&#xff1a;https://zhuanlan.zhihu.com/p/537206999 https://scanpy.readthedocs.io/en/stable/api.html scanpy python包主要分四个模块&#xff1a; 1&#xff09;read 读写模块、 https://scanpy.readthedocs.io/en/stable/api.html#reading 2&#xff09;pp Prepr…...

【Vue3 第二十一章】Teleport组件传送

一、基本使用场景 有时我们可能会遇到这样的场景&#xff1a;一个组件模板的一部分在逻辑上从属于该组件&#xff0c;但从整个应用视图的角度来看&#xff0c;它在 DOM 中应该被渲染在整个 Vue 应用外部的其他地方。 这类场景最常见的例子就是全屏的模态框。理想情况下&#…...

在 Windows Subsystem for Linux (WSL2) 的 Ubuntu 系统上配置 Vulkan 开发环境

在 Windows Subsystem for Linux (WSL2) 的 Ubuntu 系统上配置 Vulkan 开发环境Vulkan Tutorial https://vulkan-tutorial.com/ Development environment - Linux https://vulkan-tutorial.com/Development_environment 1. Vulkan - Cross platform 3D Graphics https://www…...

放苹果HJ61

入门题目 把m个同样的苹果放在n个同样的盘子里&#xff0c;允许有的盘子空着不放&#xff0c;问共有多少种不同的分法&#xff1f;注意&#xff1a;如果有7个苹果和3个盘子&#xff0c;&#xff08;5&#xff0c;1&#xff0c;1&#xff09;和&#xff08;1&#xff0c;5&#…...

Windows下,OPC UA移植,open62541移植

OPC通信标准的核心是互通性 (Interoperability) 和标准化 (Standardization) 问题。传统的OPC技术在控制级别很好地解决了硬件设备间的互通性问题,在企业层面的通信标准化是同样需要的。OPC UA之前的访问规范都是基于微软的COM/DCOM技术, 这会给新增层面的通信带来不可根除的…...

【Tomcat与Servlet篇1】认识Tomcat与Maven

目录 一、什么是Tomcat 二、Tomcat的几个重要目录 conf文件​编辑 Server.xml logs文件 Webapps目录 三、如何使用Tomcat 但是&#xff0c;如果出现了点击之后进行闪退的情况&#xff0c;那又是怎么回事呢&#xff1f; 原因1&#xff1a;环境变量没有配置 原因2&#…...

C++类和对象:拷贝构造函数和运算符重载

目录 一. 拷贝构造函数 1.1 什么是拷贝构造函数 1.2 编译器默认生成的拷贝构造函数 1.3 拷贝构造函数特性总结 二. 运算符重载 2.1 运算符重载概述 2.2 比较运算符重载&#xff08;> > < <&#xff09; 2.2.1 >运算符的重载 2.2.2 运算符的重载 2.…...

【IntelliJ IDEA】idea plugins搜索不出来,如何找到插件的解决方案

一、背景描述安装好IDEA后&#xff0c;想下载一些插件来使用&#xff0c;因为IDEA非常方便的一点就是插件使用非常的方便&#xff0c;但是经常会发现进入到插件市场无法搜索到插件的情况&#xff0c;这个时候就有点烦人了。那么怎么解决这个问题呢&#xff1f;以下会把我能想到…...

移动端自动化测试(一)appium环境搭建

自动化测试有主要有两个分类&#xff0c;接口自动化和ui自动化&#xff0c;ui自动化呢又分移动端的和web端的&#xff0c;当然还有c/s架构的&#xff0c;这种桌面程序应用的自动化&#xff0c;使用QTP&#xff0c;只不过现在没人做了。 web自动化呢&#xff0c;现在基本上都是…...

5 逻辑回归及Python实现

1 主要思想 分类就是分割数据&#xff1a; 两个条件属性&#xff1a;直线&#xff1b;三个条件属性&#xff1a;平面&#xff1b;更多条件属性&#xff1a;超平面。 使用数据&#xff1a; 5.1,3.5,0 4.9,3,0 4.7,3.2,0 4.6,3.1,0 5,3.6,0 5.4,3.9,0 . . . 6.2,2.9,1 5.1,2.5…...

技术干货 | Modelica建模秘籍之状态变量

在很多领域都有“系统”这个概念&#xff0c;它描述的往往是一些复杂关系的总和。假如我们将系统看做一个黑箱&#xff0c;那么&#xff0c;在系统的作用下&#xff0c;外界的输入有时会产生令人意想不到的输出&#xff0c;“蝴蝶效应”就是其中的典型案例。图1 一只南美洲亚马…...

LeetCode 2574. 左右元素和的差值

给你一个下标从 0 开始的整数数组 nums &#xff0c;请你找出一个下标从 0 开始的整数数组 answer &#xff0c;其中&#xff1a; answer.length nums.length answer[i] |leftSum[i] - rightSum[i]| 其中&#xff1a; leftSum[i] 是数组 nums 中下标 i 左侧元素之和。如果不…...

rollup环境配置

VUE2.x源码学习笔记 1. rollup环境配置 首先在VScode中新建文件夹vue_sc&#xff0c;然后终端打开定位到打开的文件夹&#xff0c;输入“npm init -y”初始化配置项&#xff0c;运行成功之后文件夹新增package.json文件 继续在终端运行"npm install babel/preset-env ba…...

二分查找与二分答案、递推与递归、双指针、并查集和单调队列

二分查找与二分答案 文章目录二分查找与二分答案应用总结例题木材加工题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示数据规模与约定思路代码递归与递推应用总结[NOIP2003 普及组] 栈题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示思…...

如何进行域名购买,获取免费ssl证书,使用springboot绑定ssl证书

前言 小编我将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识&#xff0c;有兴趣的小伙伴可以关注一下&#xff01;也许一个人独行&#xff0c;可以走的很快&#xff0c;但是一群人结伴而行&#xff0c;才能走的更远&#xff01;让我们在成长的道路上互相学习&#…...

LabVIEW网络服务安全2

LabVIEW网络服务安全2在客户端应用程序中创建签名对请求进行签名要求您具有能够从客户端的编程语言调用的MD5摘要算法以及SHA256加密摘要算法的实现。这两种算法通常都可用于大多数平台。还需要&#xff1a;1. 要使用的HTTP方法的字符串&#xff08;“GET”、“POST”、“PUT”…...

java动态代理

目录儿一、代理模式的作用二、实现代理的方式三、动态代理的实现3.1 jdk动态代理3.2 cglib动态代理一、代理模式的作用 功能增强: 基于某个功能&#xff0c;再增加一些功能。 &#xff08;比如目标类只负责核心功能&#xff0c;其他附属功能通过代理类完成。代理类的方法名与目…...

Python 简单可变、复杂可变、简单不可变、复杂不可变类型的copy、deepcopy的行为

copy模块&#xff1a;copy&#xff1a;浅拷贝deepcopy&#xff1a;深拷贝简单可变类型、复杂可变的copy()、deepcopy()&#xff1a;简单不可变、复杂不可变类型的copy()、deepcopy()&#xff1a;结论&#xff1a;对于简单类型的可变类型copy是深拷贝&#xff0c;改变了该拷贝变…...

QML Item

在QML中所有的可视项目都继承自Item&#xff0c;虽然Item本身没有可视化的外观&#xff0c;但它定义了可视化项目的所有属性。 Item可以作为容器使用&#xff1a; Item{Rectangle{id:retc}Rectangle{id:retc1}Rectangle{id:retc2}Rectangle{id:retc3}} item拥有children属性…...

使用xca工具生成自签证书

本文使用 xca 生成自签证书。 概述 之前使用 openssl 生成证书&#xff0c;在 golang 中测试&#xff0c;发现客户端连接失败&#xff0c;经查发现是Subject Alternative Name不支持导致的。因虚拟机 openssl 版本较低&#xff0c;有个功能无法实现&#xff0c;且升级麻烦&…...

燕郊做网站/小熊猫seo博客

一、产品需求分析1.1 产品背景剪映APP的出品方是深圳市脸萌科技有限公司&#xff0c;它是北京星云创迹科技有限公司的全资子公司&#xff0c;北京星云创迹科技有限公司又是字节跳动有限公司的全资子公司。如上图所示&#xff0c;可以看到字节跳动有限公司也全资控股了北京抖动青…...

简述网站内容管理流程/宁波seo关键词排名

一、有这样一段 html嘿嘿嘿哈哈哈复制代码二、jQuery 的 html() 方法(1)当直接调用 $().html()时&#xff0c;.html()的作用是只读取第一个目标元素的innerHTML简单实现&#xff1a;function customHtml(value) {//默认是选取第一个目标元素let elem this[0] || {},i 0,l th…...

wordpress采集源码/网络销售挣钱吗

最近做开发需要用到一个自定义的dialog&#xff0c;在网上浏览了很多这方面的问题&#xff0c;基本都写的比较复杂难懂&#xff08;对菜鸟来说&#xff09;&#xff0c;需要extends Dialog或者修改style之类的&#xff0c;最后自己写了一个dialog&#xff08;不算是真正意义上的…...

宿州医疗网站建设/google google

伪类要写content:"",否则无效...

公司网站可以做服务器吗/网站关键词优化教程

内存分配方式有三种&#xff1a; [1] 从静态存储区域分配。内存在程序编译的时候就已经分配好&#xff0c;这块内存在程序的整个运行期间都存在。例如全局变量&#xff0c; static 变量。 [2] 在栈上创建。在执行函数时&#xff0c;函数内局部变量的存储单元都可以在栈上创建…...

网站建设seo 视频教程/天津百度推广网络科技公司

1.简介 xilinx提供了两个ip用于生成ROM存储空间。一个是 Distributed Memory Generator&#xff0c;另一个是Block Memory Generator&#xff0c;两者最主要的差别是生成的 Core所占用的 FPGA 资源不一样&#xff0c;从 Distributed Memory Generator 生成的 ROM/RAM Core 占用…...