字符串中的空格替换

article/2025/9/10 8:46:03

输入一个字符串,需要我们使用其他的字符替换空格字符。
例如:一个字符串:“We are happy.”,将其中的空格字符用%20替换。怎么做呢?
**第一种思路:**暴力法则,就是直接遍历字符串,遇到空格就将其替换为“%20”。
分析这种方法容易想到,几乎每个人都能想到,但是这种方法的不足就是每次遇到一个空格就需要替换为%20这三个字符,如果不移动后续的字符串,会使得后续的字符串被覆盖,因此,每替换一个空格,该空格后面的字符串都要向后移动,这样与靠后的字符串移动的次数就会越多,这样的时间复杂度就上升为:O(n^2)。
在这里插入图片描述
所示,这样做每次都需要移动字符串所以使得时间复杂度提升了,因此我们思考别的方法。
第二种思路我们每遇到一个空格替换为长度为3的%20的字符串,所以我们可以事先计算出来替换完后,最终字符串的长度,然后射这两个指针,一个指着原始字符串的末尾,一个指着新字符串的末尾,从后往前替换,没有遇到空格就复制字符串,遇到空格,替换为%20,这样所有的字符串都仅需复制一遍,时间复杂度仅仅为O(n)。
假设原始字符串的长度为length,那么替换完后,新字符串的长度为:length+num*2,(num为空格数目。)
思路如下图所示:
在这里插入图片描述

class Replace{/*定义一个类,通过调用类中的方法可以将带有空格的字符串替换为“%20”的效果。*/public String Exchange(String str) { // 替换字符串的方法int num = 0;char[] arr = str.toCharArray();if(str == null || str.length() < 0) {return null;}for(int i =0;i < arr.length;i++) {//查找字符串中的空格数目if(arr[i] == ' ') {num++;//每找到一个空格就使得num++}}int newStrLength = str.length() + num * 2; //计算新的字符串的长度char[] newStr = new char[newStrLength];//定义一个新的字符串int n = arr.length-1;int m = newStr.length - 1;while(n >=0 && m >= n) {if(arr[n] == ' ') {newStr[m--] = '0';newStr[m--] = '2';newStr[m--] = '%';}else {newStr[m--] = arr[n];}--n;}//System.out.println(newStr);//用于测试最终的结果。String s = new String(newStr); // return newStr.toString(); 不能这样直接返回,否则最终的结果就是一个[类型@哈希值],这是因为如果是一个对象进行toString()方法,就会调用object类里面的//toString()方法,所以返回的就是[类型@哈希值],因此,可以通过这样返回字符串,1、如上所示,定义一个字符串对象;2、String str.valueOf(newStr)。return s;}
}
public class ReplaceBlank {public static void main(String[] args) {  System.out.println("请输入一个字符串:");Scanner sc = new Scanner(System.in);String str = sc.nextLine().toString();Replace re = new Replace();String result = re.Exchange(str);System.out.println("替换后的结果是:" + result);}
}

结果如下图所示:
在这里插入图片描述
第三种思路没什么难的,就是直接使用JAVA的方法库里面的函数,直接输出就行。如下图所示:

import java.util.Scanner;
class Solution{public String Replace(String str) {String arr = null;if(str == null) {return null;}else {arr = str.replaceAll(" ", "%20");//利用java的方法直接替换。}return arr;}
}
public class ReplaceBlank {public static void main(String[] args) {System.out.println("请输入一个字符串:");Scanner sc = new Scanner(System.in);String str = sc.nextLine().toString();Solution s = new Solution();String a = s.Replace(str);System.out.println("最终的结果是: " + a);}
}

最终的结果如下图所示:
在这里插入图片描述
以上只是本人的一点理解,希望各位有什么想法积极留言探讨。谢谢!


http://chatgpt.dhexx.cn/article/SAuArZ02.shtml

相关文章

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…

利用计算机进行频数分布表制作,excel制作交叉分组表,excel分组频数分布表

我们在编辑Excel表格的时候&#xff0c;如果数据很多则有可能造成数据的重复输入&#xff0c;这样不仅影响数据的准确性&#xff0c;而且还会浪费我们的时间&#xff0c;不过想要在海量的数据表中找到那些重复值也并非易事&#xff0c;下面小编以Excel 2013为例&#xff0c;教大…

Excel如何分组排序

之前有同学发了一个这个问题&#xff0c;如下图所示&#xff0c;左边是原始数据表&#xff0c;标有底色的B/G/H列是要按照右表中的要求进行公式计算的。 如要求所示&#xff0c;B列排名是按照某片区下某等级之间的5月业绩环比分组排名&#xff0c;G列“是否各片区等级前两名”要…

计算机分组Excel,【Excel神技能】如何在Excel表格中进行“数据分组”?

有时候一页Excel表格中有太多的数据&#xff0c;难道要老板一直拖着鼠标往下翻动吗&#xff1f;估计老板会跟你说“再见&#xff01;”... 那如何快速将这些数据分组好&#xff0c;让老板看着舒心呢&#xff1f;Sara今天就和小伙伴们分享下如何在Excel表格中快速分组吧~ 第一步…