[字符串]替换空格

article/2025/9/10 3:49:37

一、题目描述

原文链接:Offer 05. 替换空格


具体描述:
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。

示例 1:

输入:s = “We are happy.”
输出:“We%20are%20happy.”

限制:

  • 0 <= s 的长度 <= 10000

二、思路分析

两种方式,第一种就是定义一个存放结果的变量(可以是String,StirngBuffer,StringBuilder),遍历字符串,遇到空格就把%20拼接进去!

第二种方式就是双指针算法!

  • 第一步遍历字符串,求出来需要添加的长度!遇到空格后,存储两个空格在StringBuilder中,sb.append(" ");
  • 第二步定义两个指针,left指向原字符串的最后一个位置,然后把原字符串拼接上sb,right指针指向拼接后的长度 - 1;
  • left,right同时向左边移动,同时将left的值放到right上c_arr[right] = c_arr[left];
  • 如果left指针指向的字符是空格,则把%20倒序放到right指针指向的地方!就ok啦~

可能第二种方法有点晦涩难懂,简单的说就是计算出最终的长度,然后从后往前存储值!看看代码可能会更好理解一点!


三、AC代码

Stirng方式添加:

class Solution {public String replaceSpace(String s) {String result = "";char[] c_arr = s.toCharArray();for (int i = 0; i < c_arr.length; i++){if (" ".equals(c_arr[i] + "") == true){result += "%20";}else{result += c_arr[i];}}return result;}
}

StringBuffer方式添加:

class Solution {public String replaceSpace(String s) {StringBuffer result = new StringBuffer();char[] c_arr = s.toCharArray();for (int i = 0; i < c_arr.length; i++){if (" ".equals(c_arr[i] + "") == true){result.append("%20");}else{result.append(c_arr[i]);}}return result.toString();}
}

StringBuilder方式添加:

class Solution {public String replaceSpace(String s) {StringBuilder result = new StringBuilder();char[] c_arr = s.toCharArray();for (int i = 0; i < c_arr.length; i++){if (" ".equals(c_arr[i] + "") == true){result.append("%20");}else{result.append(c_arr[i]);}}return result.toString();}
}

双指针做法:

class Solution {public String replaceSpace(String s) {if (s == null || s.length() == 0) return s;// 空格数量 * 2StringBuilder sb = new StringBuilder();for (int i = 0; i < s.length(); i++){if (s.charAt(i) == ' ') sb.append("  ");}// 没有空格直接返回if (sb.length() == 0) return s;int left = s.length() - 1;// 原字符串最后一个位置s += sb.toString();int right = s.length() - 1;// 新字符串最后一个位置char[] c_arr = s.toCharArray();while(left >= 0){if (c_arr[left] == ' '){c_arr[right--] = '0';c_arr[right--] = '2';c_arr[right] = '%';}else{c_arr[right] = c_arr[left];}right--;left--;}return new String(c_arr);}
}

在这里插入图片描述


四、总结

  • 处理字符串速度:String < StringBuffer < StringBuilder,StringBuilder最快

感谢大家的阅读,我是Alson_Code,一个喜欢把简单问题复杂化,把复杂问题简单化的程序猿!


http://chatgpt.dhexx.cn/article/9TgtFhfg.shtml

相关文章

js 用replace替换空格 替换空格包含换行符 替换空格不包含换行符

第一种&#xff1a;替换所有的空格&#xff08;包含换行符&#xff09; let str 123AD asadf asadfasf\n adf\n let a str.replace(/\s/g," ") console.log(a) // 123AD asadf asadfasf adf 由上可看出是把所有空格替换为&nbsp&#xff1b;了&#xff0c;其中…

5. 替换空格

文章目录 剑指 Offer 05. 替换空格解法一&#xff1a;暴力解解法二&#xff1a;从后往前填充思想 第五题的扩展题&#xff1a;合并两个有序数组 LeetCode 8888. 合并两个有序数组解法一&#xff1a;暴力解解法二&#xff1a;从后往前填充思想 举一反三 剑指 Offer 05. 替换空格…

字符串中的空格替换

输入一个字符串&#xff0c;需要我们使用其他的字符替换空格字符。 例如&#xff1a;一个字符串&#xff1a;“We are happy.”&#xff0c;将其中的空格字符用%20替换。怎么做呢&#xff1f; **第一种思路&#xff1a;**暴力法则&#xff0c;就是直接遍历字符串&#xff0c;遇…

1.【刷爆LeetCode】替换空格(多方法、多思路解决)

大家好我是Liyuyue&#xff01; 接下来我会讲我刷的LeetCode好题用到的好思路、好方法分享给大家一起学习&#xff0c;如果大家在看的过程中还有好的方法&#xff0c;可以评论区或者直接找我继续讨论&#xff0c;感谢大家的支持~&#xff01; 我们先来看要求&#xff1a; 简要分…

学习笔记 - excel筛选分组

整理excel的时候&#xff0c;遇到一个分组功能筛选功能&#xff0c;原始excel内容如下&#xff1a; excel右上角有个筛选功能框 点击下拉列中的“筛选”&#xff0c;excel界面如下显示&#xff0c;标识可以进行筛选功能了&#xff0c;所有列都加入了筛选项目。 点击City Name下…

excel 分组计数

采用数据透视表的方法对数据进行分组技数 1.现在需要对 下表中各类型出现的次数进行统计。 2.选中区域点击数据透视表 3.首先&#xff0c;把类型拖到“值”和“行”中&#xff0c;需要注意的是在值中要选择“计数项&#xff01;&#xff01;&#xff01;&#xff01;&#xff…

excel自动分组

1.将年龄分组&#xff08;设置步长&#xff09; 2.日期按照季度分组

excel 手动分组和自动分组

1某个类别下有多个条目&#xff0c;我们想打开折叠显示 方法一&#xff1a;一个个的设置分组 2方法二&#xff1a; 自动分级显示 上面的实现方式&#xff0c;还是直接使用excel的分组功能&#xff0c;只不过在处理过程中&#xff0c;会遇到组成员一个时&#xff0c;处理就会麻…

Excel分组行转列

表格一 表格二 Excel表格一分组行转列变为表格二所示的格式怎么弄&#xff1f; 方案一&#xff1a; 转置粘贴&#xff0c; 每组数据单独处理&#xff0c;一组一组的选择&#xff0c;然后右键“粘贴选项”->“转置”&#xff0c;这样这一组数据就列传行了。 重复所有分组&…

excel将数据按某一列值分组并绘制分组折线图

目录 一、实现按id分组 二、绘制分组折线图 今天在处理数据的时候发现了一个很巧妙的EXCEL绘制分组折现图的方法&#xff0c;简单记录分享一下。我的数据大概长这样,我希望实现的目标是根据产品id分组绘制不同产品的销量图。 一、实现按id分组 复制产品id那一列&#xff0c;点击…

如何用excel对数据按月分组

建立数据透视表 选中一个单元格-插入-数据透视表 选择要分析的数据及结果显示位置 我主要是分析收益波动&#xff0c;需要的数据是日期和收益率&#xff0c;因此勾选date和return 数据会自动按年和季度分类 结果如图&#xff1a; 进一步将数据按月分类&#xff0c;可以在结果…

【excel】分组连续排名和不连续排名公式

需求场景&#xff1a;对上面的数据进行排名计算&#xff0c;4种情况&#xff1a; ①不考虑commDate&#xff0c;单独对FoldPageNum进行排名&#xff0c;不连续排名&#xff1b; ②不考虑commDate&#xff0c;单独对FoldPageNum进行排名&#xff0c;连续排名&#xff1b; ③按co…

Excel分组数据、并创建多个新Excel文件

需求描述 原文件test.xlsx"为.xlsx格式&#xff0c;需要对不同行业的数据 进行切分&#xff0c;并存储在不同Excel表中。 步骤 1. 读取Excel转化为DataFrame import pandas as pd df pd.read_excel("test"".xlsx") df.head(10) #查看前十条数据…

Python 绘画excel分组柱状图(懒人学习)

1.excel案例如截图&#xff1a; 很简单大家自己照着做一个就可以了。 2.完整代码如下&#xff1a; import pandas as pd import matplotlib.pyplot as plt students pd.read_excel(‘H:/Python自动化办公–Pandas玩转Excel源代码&#xff08;7-30&#xff09;/010/Studen…

使用EXCEL进行数据分组分析法

分组分析是将总体数据按照某一特征性质划分成不同的部分和类型进行研究&#xff0c;从而深入分析其内在规律。 一、为什么要分组&#xff1f; 对于大量的数据&#xff0c;如果不进行分组是很难发现其中规律&#xff0c;找到不同组别之间的关系&#xff0c;从而更好地对比&…

如何在Excel中分组排名?两个公式轻松搞定!

点赞再看&#xff0c;养成习惯&#xff1b;桃李不言&#xff0c;下自成蹊。 微信搜索【亦心Excel】关注这个不一样的自媒体人。 本文 GitHub https://github.com/hugogoos/Excel 已收录&#xff0c;包含Excel系统学习指南系列文章&#xff0c;以及各种Excel资料。 教导主任给了…

excel分组求最小值

求一列的最大值最小值简单&#xff0c;但是有时候需要找出一列数据中每个分组的最大最小值&#xff0c;尤其是数据量较大的时候&#xff0c;难以手动去标出&#xff0c;这时最好用函数解决。 解决办法&#xff1a; 统计函数&#xff0c;在C列中输入公式&#xff0c; IF(B2MIN(…

excel实现分组计数

实现效果—如图&#xff1a;统计各区间成绩数量 更详细讲解&#xff1a;点击查看原文 操作步骤如图&#xff1a; 核心要点&#xff1a; 将【成绩】分别拖入【行】和【值】&#xff0c;并将【值-值字段属性&#xff1a;设为计数&#xff08;图二&#xff09;】

excel----分组后统计

复制一列后数据删除重复值后分组 countif分组统计一列中项出现的次数 sumif分组统计组内和 找出一列中不重复的项 d2中写入下面的公式&#xff0c;然后下拉得到三项&#xff01; INDEX(A:A,MIN(IF(COUNTIF($D$1:D1,$A$2:$A$11),65536,ROW($A$2:$A$11))))&""

Excel 数据随机分组

文章目录 1. 任务描述2. 实现方法一&#xff1a;Excel 函数3. 实现方法二&#xff1a;方方格子 Excel 插件 1. 任务描述 给定一定数量的数据&#xff0c;要求随机分成 n 组。例如&#xff0c;老师将学生随机分组进行讨论&#xff0c;部门将员工随机分组参加活动等。下面使用 Ex…