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