【牛客】剑指offer2-替换空格

丶灬走出姿态 提交于 2020-03-03 14:55:07

解题思路:

在Python和Java等语言中,字符串都被设计成不可变的类型,即无法直接修改字符串的某一位字符,需要新建一个字符数组来实现。

 

如果是用Java或c语言实习,则需要在最开始建立字符数组,该字符数组地长度为原来字符串s的长度的3倍,这样可以保证字符数组能容纳所有替换后的字符。

 

由于Python语言的特殊性,不需要考虑去设定字符数组的长度问题。

 

伪代码:

  • 初始化一个list,记为res,用来存放新建的字符串

  • 循环遍历列表s中的每个字符c:

    • 当c为空格时,向res后添加字符串'%20'

    • 当c不为空格时,向res后添加字符c

  • 将列表res转化为字符串并返回

代码:

class Solution:
    def replaceSpace(self, s):
        """

        :param s: str
        :return: str
        """
        res = []
        for c in s:
            if c == ' ':
                res.append('%20')
            else:
                res.append(c)

        return "".join(res)

 

 

复杂度分析:

  • 时间复杂度O(N):遍历使用O(N),每轮添加(修改)字符操作使用O(1);

  • 空间复杂度O(N):Python建立新的list和Java新建字符数组都使用了线性大小的额外空间

 

Reference:

1.LeetCode题解

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!