leetcode每日一题:向字符串添加空格

news/2025/4/2 0:25:01/文章来源:https://www.cnblogs.com/podongfeng/p/18800364

image

题目

2109. 向字符串添加空格

给你一个下标从 0 开始的字符串 s ,以及一个下标从 0 开始的整数数组 spaces

数组 spaces 描述原字符串中需要添加空格的下标。每个空格都应该插入到给定索引处的字符值 之前

  • 例如,s = "EnjoyYourCoffee"spaces = [5, 9] ,那么我们需要在 'Y''C' 之前添加空格,这两个字符分别位于下标 5 和下标 9 。因此,最终得到 "Enjoy ***Y***our ***C***offee"

请你添加空格,并返回修改后的字符串

示例 1:

输入:s = "LeetcodeHelpsMeLearn", spaces = [8,13,15]
输出:"Leetcode Helps Me Learn"
解释:
下标 8、13 和 15 对应 "LeetcodeHelpsMeLearn" 中加粗斜体字符。
接着在这些字符前添加空格。

示例 2:

输入:s = "icodeinpython", spaces = [1,5,7,9]
输出:"i code in py thon"
解释:
下标 1、5、7 和 9 对应 "icodeinpython" 中加粗斜体字符。
接着在这些字符前添加空格。

示例 3:

输入:s = "spacing", spaces = [0,1,2,3,4,5,6]
输出:" s p a c i n g"
解释:
字符串的第一个字符前可以添加空格。

提示:

  • 1 <= s.length <= 3 * 105
  • s 仅由大小写英文字母组成
  • 1 <= spaces.length <= 3 * 105
  • 0 <= spaces[i] <= s.length - 1
  • spaces 中的所有值 严格递增

思路

​ 看懂题意后,本题非常直白,可以直接模拟。而且,可能存在坑点,在提示中都排除了:

  • spaces中的值乱序,提示直接明确所有值严格递增
  • spaces中的值超过原始数组长度范围,提示中0 <= spaces[i] <= s.length - 1

​ 具体处理上,我们可以直接从前往后遍历原始的String,并利用一个额外的spaceIndex变量记录我们下一个要访问的spaces的位置,如果spaceIndex未超过spaces的长度范围,且当前在原始String中遍历到的下标就是space当前指示的下标,那么我们就拼接一个空格。

​ 我们也可以简单考虑一下,如果没有上面2个限制条件,我们如何处理。如果spaces中的值乱序,我们有2种方式:1、排序,排序后就跟当前一样处理;2、开1个Map,记录spaces中出现的值和出现次数,这样在遍历原始String的时候,可以通过这个Map来判断是否要拼接空格,以及拼接空格的数量。如果spaces的值超过原始数组长度,基本是不合法的不需要处理,唯一要处理的是,刚好处理原始数组结束位置的空格。

代码

image

public String addSpaces(String s, int[] spaces) {StringBuilder builder = new StringBuilder();int spaceIndex = 0;for (int i = 0; i < s.length(); i++) {if (spaceIndex < spaces.length && i == spaces[spaceIndex]) {builder.append(" ");spaceIndex++;}builder.append(s.charAt(i));}return builder.toString();
}

耗时

image

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jmeter 压测过程

测试策略 1、基准测试,获取无压力情况下,系统的平均响应时间; 2、采用持续并发的策略,获取系统的在不同压力下平均响应时间,TPS ; 3、在现有硬件资源下,获取到最高TPS; 4、在现有硬件资源下,持续较高TPS运行,验证系统的稳定性; 5、资源增加时,最大TPS是否可以线性增…

BaseMultiTableInnerInterceptor源码解读

本文首发在我的博客:https://blog.liuzijian.com/post/mybatis-plus-source-multi-table-inner-interceptor.html 一、概述 BaseMultiTableInnerInterceptor是MyBatis-Plus中的一个抽象类,位于mybatis-plus-jsqlparser-4.9模块中com.baomidou.mybatisplus.extension.plugins.…

test_your_nc 1(含前提简要)

前提简要: 虚拟机版本:Ubuntu24.04 pwn环境搭配如下(后面若有其他这个链接没有配置上的工具,都会在相应题目部分给出更新/分享/提示) Pwn环境搭建 都是基于个人理解,不一定完全正确!!! 题目:先启动靶机 方法一: 常规测试 直接在虚拟机nc与靶机进行连接 这道题连接后可能…

双向可控硅的基本原理阐述

双向可控硅的基本原理阐述正向--第1象限 (1)当T2、T1极间加正方向电压(即UT2〉UT1)时,如下图1-13(a)所显示。在这样的情况下,若G极无电压,则T2、T1极间不导通;若在G、T1极间加正方向电压(即UG〉UT1),T2、T1极间马上导通,电流由T2极流入,从T1极流出,这时移去G极…

DAPO: 面向开源大语言模型的解耦裁剪与动态采样策略优化系统

在人工智能技术快速迭代发展的背景下,大语言模型(LLMs)已成为自然语言处理与生成领域的核心技术。然而,将这些模型与人类偏好精确对齐并增强其复杂推理能力的挑战,促使研究者开发了一系列复杂的强化学习(RL)技术。DAPO(解耦裁剪和动态采样策略优化,Decoupled Clip and…

mysql咋了?不慌,连接不上而已。

【问题】 【自言自语】没乱整啥呀,怎么突然连不上了?先上网看看,看了几篇,好麻烦,感觉不太符合我这个问题症状。先按自己的感觉试试吧。 【解决】 Win+r后在“运行”窗口输入“services.msc”,找到mysql,重启或启动它。

Problem Set 4

Problem Set 4.1 Problem 4.1.1 Problem 4.1.2(问下cyj,没有检查) \((1)\)不平衡,反例如下\((2)\)平衡,按照\(k\)归纳(归纳更强的结论:当二叉树满足题述性质的时候,二叉树一定是完全二叉树) 当\(k=0\)的时候,此时没有节点,显然是一个完全二叉树 当\(\forall k<c\…

MySQL JOIN 操作:数据表的联谊派对指南

MySQL JOIN 操作:数据表的"联谊派对指南" 🎭 数据也有社交需求!在 MySQL 的世界里,孤独的表想要邂逅另一张表时,就需要参加一场 JOIN 派对... 什么是 JOIN 操作?🤔 JOIN 操作就是让两张或多张表建立临时关系,从而能够在一次查询中获取多个表的数据。简单来…

读DAMA数据管理知识体系指南35数据仓库和商务智能活动

读DAMA数据管理知识体系指南35数据仓库和商务智能活动1. 活动 1.1. 理解需求1.1.1. 构建一个数据仓库与开发一套业务系统不同1.1.2. 业务系统的开发取决于精确的、具体的业务需求1.1.3. 数据仓库建设则是把数据汇集在一起,再以各种不同的方式使用这些数据1.1.4. 要考虑业务目标…

『Plotly实战指南』--饼图绘制基础篇

在数据可视化的世界里,饼图是一种直观且广泛使用的图表类型。 它能够将数据各个部分占整体的比例关系清晰地展现出来,适用于诸如市场占有率分析、调查结果分布、预算分配等多个领域。 饼图以扇形面积比例直观展示数据分布,适合用于:分类数据的占比分析(如市场份额、用户画…

可视化图解算法: 二叉树的前序遍历

对于二叉树的相关算法,我们总结了一套【可视化+图解】方法,依据此方法来解决相关问题,算法变得易于理解,写出来的代码可读性高也不容易出错。1. 题目 描述 给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 数据范围:二叉树的节点数量满足 0≤n≤100 ,二叉树节点的…

2025成都.NET开发者Connect圆满结束

2025年成都.NET开发者Connect线下聚会活动于3月29日圆满结束,本次活动吸引了约30位.NET开发者朋友参与,他们分别来自成都各家技术公司,相聚城南华府国际A座24楼会议区,共同探讨.NET+AIGC & Agile101相关话题。大家好,我是Edison。 2025年成都.NET开发者Connect线下聚会…