【实战】ACM 选手图解 LeetCode 替换空格

1.【刷爆LeetCode】替换空格(多方法、多思路解决) 替换空格(多方法、多思路解决),与博主一起爆刷LeetCode吧! 阅读详情

大家好呀,我是事事儿的蛋蛋。

今天来搞替换空格,没啥说的,直接冲。

d41bfbcd7dfd7ae6fe4553e01784dc3

剑指 Offer 05:替换空格

题意

把字符串 s 中的每个空格替换成 “%20”

示例

输入:s = “We are happy.”

输出:“We%20are%20happy.”

提示

  • 0 <= length(s) <= 10000

题目解析

水题,难度简单。

字符串这边的题大多数都是可以用编程语言自带的库函数解决的,但是我们在 LeetCode 上刷题初期显然不能这样。

我们现在刷题的目的是为了更好的理解数据结构与算法,更好的理解一些封装起来的库函数是怎么实现的,而不是简简单单的为了刷题而刷题。

这道题的解法也不复杂,就是遍历整个字符串 s:

  • 碰到非空格就继续走。
  • 碰到空格就替换。

图解

以 s = “We are happy.” 为例。为了方便表示,我以下面的形式表示整个字符串。

fcaad770a084d458b2207c0f451ef0e

在这维护一个结果列表 res,遍历字符串,刚开始碰到的是 “we”,直接加入 res。

f4b022a998f48c6ceb1bbc4cf0fb112

if c != ' ':
    res.append(c)

接下俩碰到空格,替换为 “%20”,加入列表。

1d6368f8d8068f4f3a0ca1e6446e220

if c == ' ':
    res.append('%20')

接下来依次按照上面的情况进行,直至列表遍历完。

f521cde5c5706550499d44581c1ddea

本题的解法从左到右遍历整个字符串,所以时间复杂度为 O(n)。

时间复杂度还是按照你用的编程语言来算,如果字符串可修改的编程语言,比如 Python、Java,需要维护一个新的列表,这个的空间复杂度为 O(n),像可原地修改字符串的编程语言,比如 C++,这样的空间复杂度为 O(1)。

代码实现

Python 代码实现

class Solution:
    def replaceSpace(self, s: str) -> str:
        # python 字符串不可修改,所以维护一个列表
        res = []

        for c in s:
            if c == ' ':
                res.append('%20')
            else:
                res.append(c)

        return ''.join(res)

Java 代码实现

class Solution {
    public String replaceSpace(String s) {
        StringBuilder res = new StringBuilder();
        for(Character c : s.toCharArray())
        {
            if(c == ' ') res.append("%20");
            else res.append(c);
        }
        return res.toString();
    }
}

图解替换空格到这就结束辣,是不是不用库函数也很简单?

醒醒,这才是道简单题,也就比 ”Hello World“ 难一丢丢,难题还在后面,不要飘。

不过,可以给我多点点赞,让我飘起来呀。

哈哈哈,我是帅蛋,我们下次见。


推荐阅读 👍:ACM 选手带你玩转时间复杂度和空间复杂度

推荐阅读 👍:ACM 选手带你玩转字符串

推荐阅读 👍:ACM 选手图解 LeetCode 反转字符串

推荐阅读 👍:ACM 选手图解 LeetCode 反转字符串Ⅱ

避坑指南:中国地面气候日值数据集(V3.0)处理中的常见错误与解决方案 本文详细解析了中国地面气候日值数据集(V3.0)处理中的常见错误与解决方案,包括数据清洗、特征值解码、时间序列处理和质量控制等关键步骤。通过Python实战代码示例,帮助研究者高效处理这一包含全国699个气象站多要素日值数据的数据集,避免常见陷阱,提升气候变化研究和农业气象分析的准确性。 阅读详情

相关推荐

西门子200SMART自定义库开发实战:从PID到露点算法的工业应用

本文详细介绍了西门子200SMART自定义库开发实战,涵盖从PID控制到露点算法的工业应用。通过代码封装技巧、多语言支持和性能优化等高级开发方法,帮助工程师提升PLC编程效率。文章特别强调了自创库在实际项目中的优势,如恒温恒湿控制系统的成功案例,展示了自定义库在工业自动化中的强大应用价值。

lake5的博客 1029

(ACM模式时)C++的输入输出需要注意的点

acm C++输入输出

goodgoodstudy___的博客 2136

国产FPGA逆袭!深度评测复旦微RFVU3P5G核心板在相控阵雷达中的表现

本文深度评测了复旦微RFVU3P5G核心板在相控阵雷达中的实战表现。该核心板凭借射频直采架构、高采样率ADC/DAC及丰富的DSP资源,在多通道同步精度、动态范围及系统稳定性等关键指标上表现出色,展现了国产FPGA在高端雷达应用中的硬核实力与供应链自主价值。

b0c1d2的博客 727

LeetCode:剑指Offer 05. 替换空格 (字符串)

LeetCode:剑指Offer 05. 替换空格 & 151. 反转字符串中的单词 给你一个字符串 s ,请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。 注意:输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。 🍎道阻且长,行则将至。🍓!!!

Super algorithm 的博客,技术爱好者。 1262

win10下面安装MTK USB VCOM 驱动

win10下面安装MTK USB VCOM 驱动1.概述2.驱动准备3.主要步骤3.1禁用win10对没有签名驱动限制3.2通过设备管理器安装mtk usb vcom驱动3.3工具版本问题4.禁用win10对没有签名的驱动限制4.1在设置中打开 更新和安全4.2进入恢复4.3在高级启动中点击立即重新启动4.4电脑重启后的几个动作5.通过设备管理器安装MTK USB VCOM 驱动5.1准备驱动5....

qimi123456的专栏 3万+

Spring Boot集成Jasypt踩坑实录:自定义SM4加密器Bean加载失败的终极解决方案

本文深入剖析了Spring Boot集成Jasypt时自定义SM4加密器Bean加载失败的根源,即Spring Boot启动流程中Bean加载顺序与Jasypt自动配置的时序冲突。文章提供了三种从源码层面解决问题的有效方案,包括使用ApplicationContextInitializer提前注册、调整Bean依赖顺序以及自定义PropertySource处理机制,并给出了完整的国密SM4加密器实现与测试示例。

weixin_29294975的博客 200

LeetCode-剑指 Offer 05. 替换空格

String类提供的方法java中的字符串替换-replace()版权声明:本文为优快云博主「程序媛_小白」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.youkuaiyun.com/java_0000/article/details/121751889字符串 . replace(String oldChar , String newChar)其中,oldChar 表示被替换的字符串;newChar 表示用于替换的字符串。

qq_51388967的博客 324

TMS320F280049C 学习笔记11 控制率加速器 CLA 例程

总结了TI官方在C2000Ware_3_01_00_00版本中提供的7个与CLA相关的例程。

whyorwhnt的专栏 1万+

LeetCode-空格替换问题

Leetcode刷题-空格替换

chuxinchangcun的博客 793

把事务数据变成可分析数据:用 ABAP CDS 构建 Cube View 与 Query View,并拆解 OData 取数的底层路径

ABAP CDS分析建模:Cube与Query视图的实践解析 本文探讨了ABAP CDS分析建模中Cube View与Query View的核心区别与应用场景: 架构定位 Cube View作为分析型数据源,定义维度和度量的基础语义 Query View作为消费投影,控制查询可见字段和聚合逻辑 关键实现 通过@Analytics.dataCategory: #CUBE声明分析数据源 使用@DefaultAggregation确保指标口径一致性 @Analytics.query: true启用分析引擎特性 运

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 141

【QNX+Android虚拟化方案】125 - 如何创建android-spare镜像

【QNX+Android虚拟化方案】125 - 如何创建android-spare镜像

|~~~热爱生活、努力学习的小伙汁~~~| 1093

【实战】ACM 选手图解 LeetCode 左旋转字符串

图解 LeetCode:左旋转字符串

用有趣有味的方式,学习有价值的编程知识。 406

MediaPipe 教程:从安装到应用-全网最全

MediaPipe是Google推出的开源框架,专为构建机器学习管道设计,可以高效处理视频、音频等时间序列数据。本文教程从安装到应用逐步讲解: 安装步骤简单,只需通过pip安装mediapipe包并验证版本; 重点演示人体姿态检测功能,可识别33个身体关键点; 提供基础代码实现,包括视频捕获、关键点检测与可视化; 强调模块化开发,将功能封装成类以提高代码复用性。 教程适合初学者,通过清晰指引和实用代码示例,帮助快速实现计算机视觉应用。

FJN110的博客 1563

【Leetcode笔记】替换空格

【Leetcode笔记】替换空格

zyzcuczyu的博客 639

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

[日记]LeetCode算法·七——字符串①

Leetcode,字符串

Leafing_的博客 235

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

leetcode剑指 Offer 05. 替换空格(两种方法)

最后得到的字符缓冲区的大小就是要扩容的大小,我们直接将字符缓冲区转为字符串,再拼接到s的末尾。最后我们使用一个双指针法来替换元素,左指针指向原字符串的最后一位,右指针指向新字符串的最后一位,两个指针同时向低位移动,如果左指针是空格,则右指针添加三个字符‘0’、‘2’、‘%’,否则只添加左指针指向的字符。第一种方法:使用一个StringBuilder字符缓冲区,将字符串s中的字符一个个取出来,如果是空格则将"%200"加入字符缓冲区,否则将当前字符加入字符缓冲区。输出:“We%20are%20happy.”

橙子的博客 380

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【剑指offer之题目1510:替换空格 】九度OJ-1510-替换空格

【链接】:九度OJ-1510-替换空格 【题目】: 题目1510:替换空格 时间限制:1 秒内存限制:128 兆特殊判题:否提交:11482解决:2934 题目描述: 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 输入: 每个输入文件仅包含一组测试样例。 对于每组测试案例,输

herongwei 的 BLOG 759

题目1510:替换空格

题目描述: 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 输入: 每个输入文件仅包含一组测试样例。 对于每组测试案例,输入一行代表要处理的字符串。 输出: 对应每个测试案例,出经过处理后的字符串。 样例输入: We

leaderYU的专栏 1203

每日一练之替换空格

替换空格 OJ地址:替换空格 【代码】 void replaceSpace(char *str,int length) { if(length == 0) return; int count = 0; //记录空格数 for(int i = 0; i < length; i++) { if(str[i] == ' ') ++count; }

qq_41033011的博客 175

字符串的空格替换算法

问题:实现一个函数,把字符串中的每个空格替换成"%20".例如 输入"We are happy.",则输出"We%20are%20happy."(特别在网络编程中这样的问题很常见) 1.书中采用从后往前把字符串替换成"%20",时间复杂度为O(n)的时间算法: // ReplaceBlank.cpp : Defines the entry point for the console appli

ZCC的专栏 714

刷题——替换空格

请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 package timufuxi; public class kaoshi2 { public static void main(String[] args) { // TODO Auto-generate...

baidu_35752384的博客 300

重拾算法之剑指Offier——替换空格

剑指Offier——替换空格 题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 public class Solution { public String replaceSpace(StringBuffer str) { for(int i=0;

Code_KK的博客 390

替换空格

OJ链接:替换空格 题目描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 解题思路 因替换内容比被替换内容长,所以,一定涉及到字符串中字符的移动问题,移动方向一定是向后移动,所以现在的问题是移动多少的问题。 因为是 ' ' -> "%20",是1换3,所以可以先统计原字符串中空格的个数(设为n),然后可以计算出新字符串的长度 new_length = old_length + 2

canvasa的博客 208

九度OJ 题目1510:替换空格

题目1510:替换空格 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:1697 解决:436 题目描述: 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 输入: 每个输入文件...

445822357 266

空格替换

空格替换二维数组中的查找 参与人数:3148时间限制:1秒空间限制:32768K 通过比例:19.94% 最佳记录:0 ms|8552K (来自 牛客118039号) 题目描述在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。class Solution { public:

Programme Cat 322

【leetcode刷题笔记】7.替换空格(简单)

题目如下: 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 示例 1: 输入:s = "We are happy." 输出:"We%20are%20happy." 尝试: 思路:利用split()方法,将字符串变为数组,再进行拼接。 代码如下: /** * @param {string} s * @return {string} */ var replaceSpace = function(s) { let n = s.split(" "); let

zyc06123的博客 472
上一篇: 【实战】ACM 选手图解 LeetCode 反转字符串Ⅱ
下一篇: 【实战】ACM 选手图解 LeetCode 翻转字符串中的单词
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值