# 剑指 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();
}
}