笔试题分析-2

本文介绍了一种将字符串中的空格替换成%20的方法,并提供了使用StringBuffer实现的具体代码示例。讨论了两种主要思路:创建新字符串与直接在原字符串上修改。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

注:这题很简单,我也忘了这是哪的笔试题,可能是剑指OFFER的?

思路,没有思路,找到空格,干掉它就行了。。可能在具体细节里面有一些要注意的点。单说一个替换,在JAVA里面有个replace函数不知大家好不好意思用hhh。。。说到替换,就有两种思路:

1.搞一新的字符串。2.在原有字符串上修改。

给出我的思路:

 1 public class Solution {
 2     public String replaceSpace(StringBuffer str) {
 3         StringBuffer buffer=new StringBuffer();
 4         if(str!=null){
 5             for(int i=0;i<str.length();i++){
 6                 char ch=str.charAt(i);
 7                 if(ch==' '){
 8                     buffer.append("%20");
 9                 }else{
10                     buffer.append(ch);
11                 }
12             }
13         }
14         return buffer.toString();
15     }
16 }
运行时间: 33 ms 占用内存:503K
用了StringBuffer,主要是考虑到大小毕竟不确定。
当然,也可以在原有字符串上修改,但是这必须考虑效率的问题,大概考虑一下,从前往后替换,每次操作后续字符串都得后移。
这样效率显然要慢很多。如果提前算好空间,然后从后往前找空格,这样貌似快很多。这个思路没有写,大家可以上网查一查,应该会有。
前面做这些题时都没有标上出处,真的烦。。牛客网又静态文件加载出错,感觉是DNS的问题,也没有解决,后面做题注释加上这些细节吧

转载于:https://www.cnblogs.com/zzmher/p/6556403.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值