
剑指 offer之替换空格_java
发布日期:2021-05-07 02:40:32
浏览次数:26
分类:精选文章
本文共 1036 字,大约阅读时间需要 3 分钟。
题目:替换空格
题目描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。解题思路:
解题思路:String中的内容是不能改变的。一旦试图改变String中的内容,就会产生一个新的实例。如果试图改变String的内容,改变之后的值只能通过返回值得到。用String做连续多次修改,每一次都会产生一个临时的对象,这样开销太大会影响效率。stringBuffer能容纳修改后的结果,因此如果要连续多次修改字符串内容,用String Buffer是更好的选择。 (1)如果是字符数组,可以定义一个 str的长度+空格个数*2的数组,从后往前移动指针 (2) 用StringBuffer 这道题目在牛客网给出的实现函数是public String replaceSpace(StringBuffer str) {},个人感觉直接在StringBuffer上面进行修改即可,不会产生新的实例。因为给的又不是String,也不是char [] 。但是不知道为什么磁体评论区的大佬还是给出了原书的代码。不过还是具有一定的参考性,这里也会给出评论区某一位大佬的答案做参考。第一种思路:直接用String Buffer中的replace方法
public class Solution { public String replaceSpace(StringBuffer str) { for(int i=0;i
第二种思路:来源于牛客网此题的评论区
/*问题1:替换字符串,是在原来的字符串上做替换,还是新开辟一个字符串做替换!问题2:在当前字符串替换,怎么替换才更有效率(不考虑java里现有的replace方法)。 从前往后替换,后面的字符要不断往后移动,要多次移动,所以效率低下 从后往前,先计算需要多少空间,然后从后往前移动,则每个字符只为移动一次,这样效率更高一点。*/public class Solution { public String replaceSpace(StringBuffer str) { int spacenum = 0;//spacenum为计算空格数 for(int i=0;i=0 && indexold
ps:此代码我未做证明与验证,但是思路和原书是相同的
发表评论
最新留言
感谢大佬
[***.8.128.20]2025年04月05日 13时10分07秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
上周热点回顾(10.20-10.26)
2021-05-09
上周热点回顾(2.16-2.22)
2021-05-09
上周热点回顾(3.2-3.8)
2021-05-09
.NET跨平台之旅:借助ASP.NET 5 Beta5的新特性显示CLR与操作系统信息
2021-05-09
上周热点回顾(7.27-8.2)
2021-05-09
上周热点回顾(5.9-5.15)
2021-05-09
上周热点回顾(1.16-1.22)
2021-05-09
上周热点回顾(1.23-1.29)
2021-05-09
上周热点回顾(3.20-3.26)
2021-05-09
上周热点回顾(6.19-6.25)
2021-05-09
云计算之路-阿里云上:docker swarm 集群故障与异常
2021-05-09
上周热点回顾(2.19-2.25)
2021-05-09
云计算之路-阿里云上:博客web服务器轮番CPU 100%
2021-05-09
云计算之路-阿里云上:服务器CPU 100%问题是memcached连接数限制引起的
2021-05-09
上周热点回顾(3.26-4.1)
2021-05-09
上周热点回顾(6.25-7.1)
2021-05-09
【故障公告】10:30-10:45 左右 docker swarm 集群节点问题引发故障
2021-05-09
工作半年的思考
2021-05-09
不可思议的纯 CSS 滚动进度条效果
2021-05-09