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

解题思路:

在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题解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值