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

【蓝桥杯集训·每日一题】AcWing 3768. 字符串删减

文章目录

  • 一、题目
    • 1、原题链接
    • 2、题目描述
  • 二、解题报告
    • 1、思路分析
    • 2、时间复杂度
    • 3、代码详解
  • 三、知识风暴
    • 双指针

一、题目

1、原题链接

3768. 字符串删减

2、题目描述

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

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

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

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

输入格式

第一行包含整数 n。

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

输出格式

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

数据范围

3≤n≤100

输入样例1

6
xxxiii

输出样例1

1

输入样例2

5
xxoxx

输出样例2

0

输入样例3

10
xxxxxxxxxx

输出样例3

8

二、解题报告

1、思路分析

我的思路
(1)遍历一遍字符串,求出从每个位置开始,长度为3的子串,如果该子串中包含三个x,则需要删去一个。
(2)统计所有位置的需要删除的个数,输出即可。

思路来源:y总蓝桥杯每日一题b站视频链接
y总yyds

y总思路
(1)利用双指针算法找出每段连续x的个数,如连续的x的个数小于3,则不需要删除;否则如果连续x的个数大于等于3个,则需要删除x,并使得该段x的个数等于2个。
(2)统计所有需要删除的x的个数,输出即可。

2、时间复杂度

我的思路时间复杂度O(n)
y总思路时间复杂度O(n)

3、代码详解

我的思路代码

#include <iostream>
#include <string>
using namespace std;
int n,ans;
string s;
int main(){cin>>n;cin>>s;for(int i=0;i<s.size()-2;i++){   //从前到后依次枚举长度为3的子串的起点if(s.substr(i,3)=="xxx"){    //每出现连续3个x说明需要删一个,ans++ans++;}}cout<<ans;return 0;
}

y总思路代码

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int n,ans;
string s;
int main(){cin>>n;cin>>s;for(int i=0;i<s.size();i++){    //从前往后枚举字符串s的每个位置if(s[i]=='x'){              //如果当前位置为xint j=i+1;              //j指向当前位置的下一位         while(j<n&&s[j]=='x') j++;   //如果j也是x,j++,最终j指向该段连续的x的下一个位置ans+=max(j-i-2,0);         //j-i为该段连续x中x的数量,j-i-2是需要删除x的数量,有可能连续x的个数小于3,所以需要与0取maxi=j-1;                   //i指向当前连续一段x的最后一位的x的位置,下次循环前i++,就指向了该段连续x之后的第一个不是x的位置}}cout<<ans;return 0;
}

三、知识风暴

双指针

如果在暴力求解过程中出现需要用双层循环来遍历,而且两层循环的变量走向具有单调性,则可以进行双指针优化,可以将时间复杂度降低至O(n)。

相关文章:

【蓝桥杯集训·每日一题】AcWing 3768. 字符串删减

文章目录一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解三、知识风暴双指针一、题目 1、原题链接 3768. 字符串删减 2、题目描述 给定一个由 n 个小写字母构成的字符串。 现在&#xff0c;需要删掉其中的一些字母&#xff0c;使得字符串中不…...

Python|每日一练|树|深度优先搜索|数组|二分查找|链表|双指针|单选记录:填充每个节点的下一个右侧节点指针|搜索插入位置|旋转链表

1、填充每个节点的下一个右侧节点指针&#xff08;树&#xff0c;深度优先搜索&#xff09; 给定一个 完美二叉树 &#xff0c;其所有叶子节点都在同一层&#xff0c;每个父节点都有两个子节点。二叉树定义如下&#xff1a; struct Node { int val; Node *left; Node *rig…...

降雨量实时监测系统压电式雨量计

压电式雨量传感器由上盖、外壳和下盖组成&#xff0c;壳体内部有压电片和电路板&#xff0c;可以固定在外径50mm立柱上和气象站横杆上。传感器采用冲击测量原理对单个雨滴重量进行测算&#xff0c;进而计算降雨量。雨滴在降落过程中受到雨滴重量和空气阻力的作用&#xff0c;到…...

滑动相关的原理以及用滤波器实现滑动相关(匹配滤波器捕获DMF)

目录滑动相关匹配滤波器捕获&#xff08;DMF&#xff09;滑动相关 滑动相关属于一种时域捕获方法&#xff0c;其具体原理是是通过本地序列与接收信号在固定窗长内滑动累加得到相关结果。 一般滑动相关算法可以用于对自相关性非常好的伪码进行同步判决。 我们首先生成一组自相关…...

计算机网络笔记(三)—— 数据链路层

数据链路层概述 数据链路层以帧为单位传输数据。 封装成帧&#xff1a;给网络层提供的协议数据单元添加帧头帧尾 差错检测&#xff1a;检错码封装在帧尾 可靠传输&#xff1a;尽管误码不能避免&#xff0c;但如果可以实现发送什么就接受什么&#xff0c;就叫可靠传输 封装成…...

【日常】矩阵正态分布参数检验问题

最近给凯爹做的一个苦力活&#xff0c;统计检验这个东西说实话也挺有趣&#xff0c;跟算法设计一样&#xff0c;好的检验真的是挺难设计的&#xff0c;就有近似算法的那种感觉&#xff0c;检验很难保证size和power都很理想&#xff0c;所以就要做tradeoff&#xff0c;感觉这个假…...

QML矩形(Rectangle)

Rectangle 用于绘制矩形 常见的属性&#xff1a; 填充颜色&#xff1a;纯色&#xff1a;color 渐变 &#xff1a;Gradient类 渐变的优先级大于纯色Gradient&#xff08;渐变色&#xff09;&#xff1a; 渐变由多种颜色定义&#xff0c;这些颜色将无缝混合&#xff0c…...

CSS自定义鼠标样式

CSS自定义鼠标样式 属性值 属性描述url需使用的自定义光标的 URLdefault默认光标&#xff08;通常是一个箭头&#xff09;auto默认。浏览器设置的光标crosshair光标呈现为十字线pointer光标呈现为指示链接的指针&#xff08;一只手&#xff09;move此光标指示某对象可被移动e…...

春招Leetcode刷题日记-D4-双指针算法-滑动窗口快慢指针

D4-双指针算法-滑动窗口&&快慢指针快慢指针算力扣141. 环形链表思路代码力扣142. 环形链表 II思路代码滑动窗口力扣76. 最小覆盖子串思路代码力扣424. 替换后的最长重复字符思路代码快慢指针算 快慢指针算法&#xff0c;多用于链表当中&#xff0c;常见的如&#xff1…...

【go】结合一个go开源项目分析谷歌浏览器cookie为什么不安全 附go项目导包失败怎么解决教程

本文创作背景 源于谷歌浏览器提示密码被泄露 并且某站很快收到了异地企图登录的提醒。 当即怀疑是不是谷歌浏览器保存的密码不安全&#xff0c;最后查阅诸多资料 并找到一个go语言编写的开源项目进行研究&#xff0c;虽然最终不能确定密码是如何泄露的 但研究结论还是让人不由感…...

Windows瘦身方法

一、快速删除系统盘临时文件方法, 1、winr打开运行对话框&#xff0c;输入%temp%命令&#xff0c;如图1 图1 2、打开temp文件夹&#xff0c;如图2&#xff0c;选择所有文件&#xff0c;鼠标右键删除或按Del键删除。 图2 二、磁盘清理 1、winr&#xff0c;输入cleanmgr&#x…...

19. 删除链表的倒数第 N 个结点

题目链接&#xff1a;https://leetcode.cn/problems/remove-nth-node-from-end-of-list/进阶&#xff1a;你能尝试使用一趟扫描实现吗&#xff1f;解题思路&#xff1a;最简单的方法是先遍历一次链表&#xff0c;得到链表的长度len&#xff0c;然后再一次遍历链表&#xff0c;遍…...

【Linux】网络编程 - 基础概念

目录 一.OSI七层模型vsTCP/IP五层模型 1.一些周边概念 2.OSI七层模型 3.TCP/IP五层模型 4.网络传输流程图 二.什么是MAC地址 三.什么是IP/IP地址 1.什么是IP 2.什么是IP地址 四.什么是端口号 一.OSI七层模型vsTCP/IP五层模型 1.一些周边概念 局域网vs广域网 网络互…...

Unity 多语言 轻量高效的多语言工具集 LanguageManager

效果展示 支持excel导入自动化 组件化 更方便 也提供直接获取多语言的接口 没有挂 LanguageText的对象也可以获取多语言文本内容 支持 Format接口 可以传递N个参数进来组装多语言 支持首次系统语言自测 支持语言切换后本地自动保存配置 支持实时切换 同步刷新所有UI 容错处…...

在Linux和Windows上安装zookeeper-3.5.9

记录&#xff1a;378场景&#xff1a;在CentOS 7.9操作系统上&#xff0c;安装zookeeper-3.5.9。在Windows上操作系统上&#xff0c;安装zookeeper-3.5.9。版本&#xff1a;JDK 1.8 CentOS 7.9 zookeeper-3.5.9官网地址&#xff1a;https://zookeeper.apache.org/源码地址&…...

【ESP32+freeRTOS学习笔记-(八)资源管理】

目录1、 资源使用概况2、互斥方法之一&#xff1a;基本临界区2.1、taskENTER_CRITICAL_FROM_ISR() 和taskEXIT_CRITICAL_FROM_ISR()3、互斥方法之二&#xff1a;挂起或锁定调度程序3.1 vTaskSuspendAll()3.2 xTaskResumeAll()4 互斥方法三&#xff1a;互斥信号量&#xff08;和…...

P1427 小鱼的数字游戏(赋值运算符和String)

小鱼的数字游戏 题目描述 小鱼最近被要求参加一个数字游戏&#xff0c;要求它把看到的一串数字 aia_iai​&#xff08;长度不一定&#xff0c;以 000 结束&#xff09;&#xff0c;记住了然后反着念出来&#xff08;表示结束的数字 000 就不要念出来了&#xff09;。这对小鱼…...

Java学的好,工作不愁找

俗话说的好&#xff1a;“Java学的好&#xff0c;工作不愁找”&#xff0c;不管我们学习哪一门语言&#xff0c;我们都要掌握从抽象化中提取出来的方法&#xff0c;这样你才能提高我们的学习能力&#xff0c;并且在学习新事物的时候可以提取我们自己的想法。学习java&#xff0…...

表情包可视化编辑、生成配置信息数据工具

合成GIF图片 - 表情包 后续&#xff0c;用于快速、便捷生成 img_config.js 中 要生成的GIF每一帧数据&#xff08;写入头像图片信息参数&#xff09;&#xff1b; 1、先上传 写入GIF中头像 标准图&#xff0c;同时获取图片信息&#xff0c;更新 写入GIF中头像 初始值&#xff0…...

java简单循环结构

while循环结构 Java提供的while条件循环。它的基本用法是&#xff1a; while (条件表达式) {循环语句 } // 继续执行后续代码while循环在每次循环开始前&#xff0c;首先判断条件是否成立。如果计算结果为true&#xff0c;就把循环体内的语句执行一遍&#xff0c;如果计算结果…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

JAVA后端开发——多租户

数据隔离是多租户系统中的核心概念&#xff0c;确保一个租户&#xff08;在这个系统中可能是一个公司或一个独立的客户&#xff09;的数据对其他租户是不可见的。在 RuoYi 框架&#xff08;您当前项目所使用的基础框架&#xff09;中&#xff0c;这通常是通过在数据表中增加一个…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南&#xff1a;从入门到实战 一、Grunt 是什么&#xff1f; Grunt是一个基于 Node.js 的前端自动化任务运行器&#xff0c;主要用于自动化执行项目开发中重复性高的任务&#xff0c;例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 &#x1f37a; 最新版brew安装慢到怀疑人生&#xff1f;别怕&#xff0c;教你轻松起飞&#xff01; 最近Homebrew更新至最新版&#xff0c;每次执行 brew 命令时都会自动从官方地址 https://formulae.…...

WebRTC从入门到实践 - 零基础教程

WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC&#xff1f; WebRTC&#xff08;Web Real-Time Communication&#xff09;是一个支持网页浏览器进行实时语音…...

嵌入式常见 CPU 架构

架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集&#xff0c;单周期执行&#xff1b;低功耗、CIP 独立外设&#xff1b;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel&#xff08;原始…...

MySQL 主从同步异常处理

阅读原文&#xff1a;https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主&#xff0c;遇到的这个错误&#xff1a; Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一&#xff0c;通常表示&#xff…...

go 里面的指针

指针 在 Go 中&#xff0c;指针&#xff08;pointer&#xff09;是一个变量的内存地址&#xff0c;就像 C 语言那样&#xff1a; a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10&#xff0c;通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...