# 剑指 Offer 05. 替换空格

大家好,我是吴师兄。

今天继续来学习《剑指Offer》系列的一道经典题目,依旧给出了非常详细的题解和精美的配图与动画。

# 一、题目描述

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

示例 1:

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

限制:

  • 0 <= s 的长度 <= 10000

# 二、题目解析

这题还是挺简单的。

遍历字符串中的每个字符,如果不是空格,直接赋值过去数组中;否则,赋值 %20 过去数组中。最后,从数组中的前 size 个字符创建新字符串,并返回新字符串。

为了帮助你更好的理解整个过程,我特意做了一组动画,点开可以查看

# 二、参考代码

// 登录 AlgoMooc 官网获取更多算法图解
// https://www.algomooc.com
// 作者:程序员吴师兄
class Solution {
    public String replaceSpace(String s) {
    
        // StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象
        // 由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类
        StringBuilder res = new StringBuilder();

        // 利用方法 toCharArray 将字符串 s 转换成一个新的字符数组
        // 获取这个字符数组中的每个字符
        for(Character c : s.toCharArray()){

            // 1、如果发现该字符为空格,即 ' '
            if(c == ' ') {
                // 那么在 res 中添加 %20
                res.append("%20");
            
            // 2、否则,如果发现该字符不是空格
            }else{
                // 那么在 res 中原字符
                res.append(c);
            }
          
        }

        // 最后把字符串返回
        return res.toString();
    }
}