#剑指 Offer 05 替换空格

1.题目

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

示例 1:

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

限制:

0 <= s 的长度 <= 10000

2.思路与实现

1.字符串缓冲区:建立一个字符串缓冲区对象,遍历字符串,遇到空格向缓冲区中加入“%20”,否则向缓冲区中添加对应字符
时间N
空间N

class Solution {
    public String replaceSpace(String s) {
        
        StringBuffer cur = new StringBuffer();
        for(int i = 0; i < s.length(); i++)
        {
            if(s.charAt(i) == ' ')
                cur.append("%20");
            else
                cur.append(s.charAt(i));
        }
        return cur.toString();

    }
}

3.总结思路与实现

其他方法:
2.字符数组:建立一个三倍大小的字符数组(因为一个空格对应三个字符,产生的字符串最多是原来长度的三倍),遍历字符串,遇到空格字符向字符数组中一次添加’%’ ‘2’ ‘0’,否则添加对应字符
时间N
空间N

class Solution {
    public String replaceSpace(String s) {
        
        char[] ch = new char[s.length() * 3];
        int j = 0;
        for(int i = 0; i < s.length(); i++)
        {
            if(s.charAt(i) == ' ')
            {
                ch[j++] = '%';
                ch[j++] = '2';
                ch[j++] = '0';
            }   
            else
                ch[j++] = s.charAt(i);
        }
        return new String(ch, 0, j);

    }
}
  • 注意最后不能直接将字符数组转化为字符串,因为原字符数组是字符串长度的三倍,如果字符串不全是空格,字符数组不会被填满,后面将出现\u0000

3.replace()方法、replaceAll()

class Solution {
    public String replaceSpace(String s) {

        return s.replace(" ", "%20");

    }
}

4.相关知识

  • String类的构造方法:new String(char[ ] ch, int offset, int count)从字符数组中按指定角标offset为开端,count为个数,构成字符串
  • String类:replace(old, new)将旧字符串中的所有old(可以是字符也可以是字符串,但new要与其相同类型)替换为new
  • String类:replaceAll(regex),基于正则表达式的替换,但也兼容replace()形式的替换
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值