天天看點

[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修改字元串中元素的方法

繼續閱讀