0
点赞
收藏
分享

微信扫一扫

3-剑指 Offer 05. 替换空格

九月的栩 2022-12-15 阅读 53

题目

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

示例 1:

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

限制:0 <= s 的长度 <= 10000


思路:遍历添加

在 C++ 语言中,字符串被设计成可变的类型,因此可以在不新建字符串的情况下实现原地修改。在 Python 和 Java 等语言中,字符串都被设计成不可变的类型,即无法直接修改字符串的某一位字符,需要新建一个字符串实现。

算法流程:
初始化一个 StringBuilder,记为 res;
遍历列表 s 中的每个字符 c :
当 c 为空格时:向 res 后添加字符串 "%20" ;
当 c 不为空格时:向 res 后添加字符 c ;
将列表 res 转化为字符串并返回。


代码

class Solution {
    public String replaceSpace(String s) {
        StringBuilder res = new StringBuilder();
        //toCharArray()方法将字符串转换为字符数组
        for(Character c : s.toCharArray()){
            if(c == ' '){
                res.append("%20");
            }else{
                res.append(c);
            }
        }
        return res.toString();
    }
}


复杂度分析:
时间复杂度 O(N): 遍历使用 O(N),每轮添加(修改)字符操作使用 O(1);
空间复杂度 O(N):新建的 StringBuilder 使用了线性大小的额外空间。

 

举报

相关推荐

0 条评论