[python]剑指Offer-替换空格

牛客OJ:替换空格

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


思路一:

  • 新建字符串,依次遍历输入字符串,若为空格则替换后加入新字符串,若非空格则直接加入。
# -*- coding:utf-8 -*-
# 运行时间:22ms
# 占用内存:5860k
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        l=''
        for i in s:
            if i==' ':
                l+='%20'
            else:
                l+=i
        return l

思路二:

  • 用split函数根据空格对字符串进行划分,转为list,再用join函数连接成字符串。
# -*- coding:utf-8 -*-
# 运行时间:20ms
# 占用内存:5728k
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        return '%20'.join(s.split(' '))

思路三:

  • 调用python中字符串替换函数(我也不想的_(:з」∠)_)。
# -*- coding:utf-8 -*-
#运行时间:28ms
#占用内存:5752k
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        return s.replace(' ','%20')

19.3.14
看了下别人的方法,原来这题用从前到后遍历那么low哈哈哈。下面补一个从后往前遍历的~
思路四:

  • 从前往后遍历字符串,记录空格个数,得到替换后应有的字符串长度;
  • 从后往前遍历替换后字符串长度,若遇空格则通过修改下标依次加入’%’,'2’,‘0’,否则加入原字符串中元素。

注意:由于python中不能直接修改字符串,上述方法需要进行间接修改。

class Solution:
# -*- coding:utf-8 -*-
#运行时间:23ms
#占用内存:5736k
    # s 源字符串
    def replaceSpace(self, s):
        l=len(s)
        blank=0
        for i in range(l):
            if s[i]==' ':
                blank+=1
        res=[0]*(l+2*blank)#借助一个list来修改字符串
        for i in range(l-1,-1,-1):
            if s[i]!=' ':
                res[i+2*blank]=s[i]
            else:
                res[i+2*blank]='0'
                res[i+2*blank-1]='2'
                res[i+2*blank-2]='%'
                blank-=1
        return ''.join(res)

附:python修改字符串中元素的方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值