【实战】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 反转字符串Ⅱ

5分钟搞定PaddleOCR PP-OCRv5环境搭建:从安装到第一个识别Demo 本文提供了一份详细的PaddleOCR PP-OCRv5环境搭建与快速入门指南。通过清晰的步骤,指导读者在5分钟内完成从创建Python虚拟环境、安装PaddlePaddle框架和PaddleOCR库,到编写并运行第一个OCR识别Demo的全过程,帮助开发者快速体验最新的PP-OCRv5模型的文字识别能力。 阅读详情

相关推荐

别再死记硬背了!用51单片机的AD/DA和PWM,亲手做个简易示波器信号发生器

本文详细介绍了如何利用51单片机的PWM和AD/DA功能制作简易示波器信号发生器。通过PWM模拟DAC输出波形,结合XPT2046 ADC进行信号测量,实现方波、三角波和正弦波的生成与显示。项目不仅成本低廉,还能帮助电子爱好者深入理解51单片机的核心功能,是理论与实践结合的绝佳案例。

weixin_28675839的博客 265

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

acm C++输入输出

goodgoodstudy___的博客 2136

ESP32 BLE Mesh Provisioner实战:手把手教你用ESP-IDF配网智能灯泡(附常见错误排查)

本文提供了一份基于ESP-IDF的ESP32 BLE Mesh Provisioner实战指南,详细解析了配网器的核心角色与工作流程。文章手把手教你从工程搭建、代码初始化到核心回调解析,并重点针对常见的‘Model not bound to AppKey’等错误提供了深度排查思路与解决方案,帮助你构建一个稳定可靠的智能照明网关。

desk3的博客 515

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

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

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

学习笔记:物理信息神经网络(PINN)

PINN 的强大在于它打破了传统数值方法的限制,将神经网络的非线性拟合能力与物理方程的严谨性结合起来。它在处理高维、数据稀缺、复杂物理约束的场景下尤其出色。当然,PINN 也有收敛慢、梯度消失等挑战,比如,复杂 PDE 可能导致梯度传播困难,收敛慢(梯度消失)、于具有快速变化特征的系统,如冲击波,标准 PINN 可能精度不足,需要改进策略,比如自适应采样或多尺度特征提取。但随着研究深入,这些问题正在不断被解决。物理或化学方程为什么往往是偏微分方程?什么是物理信息神经网络(PINN)?x_%7Bi%7D。

qq_52635735的博客 1万+

Ubuntu系统下MRIcroN、FSL6.0.5、Freesurfer7.1.1、ANTs、MRtrix3、AFNI的安装详解——核磁共振数据处理必备

Ubuntu系统下MRIcroN、FSL6.05、Freesurfer7.1.1、MRtrix3、AFNI、ANTs的安装详解一、安装MRIcroN二、 FSL6.0.5完整安装与FSLeyes等Not Found修复Anaconda与虚拟环境(所有操作均在root下)获取最新版Anaconda3安装Anaconda3配置所有用户可用去掉恼人的base创建虚拟环境FSL与FSLeyes安装(所有操作均在root下)下载FSL安装FSL添加环境变量到/etc/bash.bashrc末尾 (ubuntu)或者

从事脑科学核磁共振方法学研究,在Nature communications等权威期刊发表研究论文,熟练掌握磁共振处理方法和统计学方法,欢迎大家和我交流。 6086

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

sim800c插卡后指示灯还是一秒一闪无法接收发送短信,如何解决?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1169

LeetCode-空格替换问题

Leetcode刷题-空格替换

chuxinchangcun的博客 793

今日头条面试——iOS开发面试题

layoutIfNeeded和setNeedsLayout的区别。* Pod update和pod install的区别。* 10、autoreleasepool的使用场景。* 如何hook一个对象的方法,而不影响其它对象。* 数组cop后里面的元素会复制一份新的吗。* 介绍项目,主要介绍自己强项一点的地方。* assing可以使用在对象中吗。* isEquel和hash的关系。* 4、谈谈runtime的理解。* 8、谈谈runloop的理解。* copy和strong的区别。

FPGA/MATLAB学习教程/源码/项目合作开发 594

【AutoSAR CAN】04 - 如何使用Davinci Configurator Pro工具配置CAN的波特率

改参数为Tx Arbitration start delay value ,可用于延迟仲裁过程的起始点,用来补偿CAN收发器及线路的传输延迟,以优化传输性能。有关详细信息,请参阅硬件手册。该参数指定采样点模式,即选择多少个采样点的数量,如果选择了每比特三个样本选项,则该点标记第三个样本的位置;我们要配置CAN的波特率,其实就是要弄明白 CAN 控制器的位时序即可,具体的理论部分和EB的配置部门可参考文章《该参数表示传播延迟有多少个时间单位Tq,即上文中的Propagation delay/PROGSEG。.

2603

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

图解 LeetCode:左旋转字符串

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

瑞芯微RK3588部署YOLOv8模型

写下这篇博客进行记录,以防后面忘了怎么部署。

weixin_45303602的博客 3672

【Leetcode笔记】替换空格

【Leetcode笔记】替换空格

zyzcuczyu的博客 639

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

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

Leetcode,字符串

Leafing_的博客 235

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

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

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

橙子的博客 380

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【剑指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、付费专栏及课程。

余额充值