python实现剑指offer中的替换空格(in-place)

本文介绍了一种在原list上进行字符串空格替换的方法,利用Python的list extend特性,避免了额外list的创建,提高了效率。通过具体示例,详细展示了如何将字符串中的空格替换为%20。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

讲在前面的话,网上关于这道题的Python解法很多,但是大多是都是重新创建一个list,本文旨在在使用一个技巧list的extend方法来在原来的list上扩展, 这样的话就不用再开一个list了。

1.题目描述:

请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

2.show me the code

def replaceSpace( s):
    # write code her
    if not s :
        return ''
    count = 0
    for i in s:
        if i == ' ':
            count += 1
    list_s = list(s)
    list_s.extend([None for j in range(2*count)])  #直接使用extend来扩展
    
    olength = len(s) -1          #original length
    nlength = olength + 2*count  #new length
    
    while olength >= 0 and nlength > olength:
        if list_s[olength] == ' ':
            list_s[nlength-2:nlength+1] = ['%', '2', '0']
            nlength -= 3
            olength -= 1
        else:
            list_s[nlength] =  list_s[olength]
            nlength -= 1
            olength -= 1
    return ''.join(list_s)


print(replaceSpace('hello wrold'))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值