剑指offer #05 替换空格

本文介绍了一种在Python中将字符串中的空格替换为%20的算法实现,提供了三种不同的解决方案,包括使用replace函数、创建新字符串进行遍历替换以及使用列表进行高效替换的方法。

题目描述

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

题解

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

思路一

replace函数

思路二

创建新字符串,遍历输入字符串,遇到空格在新字符串后加‘%20’。
但由于Python中str是不可变类型,每加一位会生成新的字符串,浪费内存。

class Solution:
    def replaceSpace(self, s: str) -> str:
        r = ''  # 创建一个空str
        for i in s:
            if i == ' ':          # 判断遍历到的字符是否为空格
                r += '%20'   # 遇到s中为空格,替换为%20
            else:
                r += i    

        return r  

在这里插入图片描述

思路三(最佳)

class Solution:
    def replaceSpace(self, s: str) -> str:
        r = []  # 创建一个空list
        for i in s:
            if i == ' ':          # 判断遍历到的字符是否为空格
                r.append('%20')   # 遇到s中为空格,替换为%20
            else:
                r.append(i)    

        return ''.join(r)   # 将列表中的元素连接成字符串

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

在这里插入图片描述
简化代码

class Solution:
    def replaceSpace(self, s: str) -> str:
        return ''.join(('%20' if i ==' ' else i for i in s))

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值