Java后端算法题--剑指offer05之替换空格

话不多说,先上题目

转载于力扣(LeetCode)
 

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

示例 1:

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

限制:

0 <= s 的长度 <= 10000

由此可见,是一个遍历String字符串的问题,但是String字符串又没有合适的索引方法或者定义,所以通用的做法当然把他转为char字符数组,因为String字符串中有一个方法:toCharArray()

顾名思义,就是把String字符串转成拥有索引的字符数组, 

我们来查查看Java  Api(Application Programming Interface)即应用程序接口,你可以理解为一本Java的新华字典,有了它我们就不需要翻书或者百度查找你想要找的类(java库中存在的类及其相关信息和方法解释)了。

而我比较喜欢用这个

https://www.apiref.com/java11-zh/java.base/java/lang/String.html

 Java11的中文版Api

回到这里,我们看到

那么我们就可以做到

char[] su=s.toCharArray();

把s这个String字符串型通过该方法得到其字符数组

然后接着的问题是遍历,上一篇文章看到了大家喜欢用while循环来减少循环,当然这里只有一个循环,我们也要养成习惯,

然后我们用while循环,定义一个temp变量,表示当前字符位置,

循环条件就是 temp<su.length

第一个问题,如何从字符串得到有索引能遍历的字符数组(解决)

第二个问题来了,Solution定义的返回类型是String啊,你不可能给回他一个个字符结果吧,

所以这里有一个经验,我不知道是不是,对不对,

字符串和字符数组的转换:字符串-->字符数组就是用的toCharArray()方法

                                       而 字符数组-->字符 一定要经过StringBuilder这个类

因为StringBuilder类拥有toString方法的同时,

通过查阅api

最关键的是他的append方法十分灵活,顾名思义就是在最后加入东西:

其中,加入char一个字符也行,加入字符串数组也行,加入String字符串也行

这个就变得非常灵活了,反正最后能输出String类型就可以了,所以我的代码如下

class Solution {
    public String replaceSpace(String s) {
    char[] su=s.toCharArray();
    int temp=0; 
    StringBuilder sre=new StringBuilder();
    while(temp<su.length){
        if(su[temp]==' ')
        sre.append("%20");
        else
        sre.append(su[temp]);
         temp++;
    }
    return sre.toString();
    }
}

空间上我想不到优化的方法了,可能可以去掉char[] su=s.toCharArray();

直接在循环中使用s.toCharArray()[temp]这样的手法来做吧,但是我觉得也区别不算太大,所以大家可以借鉴借鉴,

我是一名在努力的java小白,现在喜欢研究算法写一些小文章和大家研究,主要是以java小白的心态和大家探讨入门的java算法和面试算法题,如有意见,尽管提字,我们一起学习进步。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值