2 替環空格

2022-05-17 20:07:38 字數 1721 閱讀 6161

思路:從前往後替換,後面的字元要不斷往後移動,要多次移動,所以效率低下,時間複雜度 o(n2)。

從後往前,先計算需要多少空間,然後從後往前移動,則每個字元只為移動一次,這樣效率更高一點。時間複雜度o(n)。

1

public

class

solution 89

int newlength = str.length() + spacenum *2;

10int p1 = str.length()-1;

11int p2 = newlength -1;

12str.setlength(newlength);

13for(;p1>=0 && p2>p1;p1--)else

19 str.setcharat(p2--,str.charat(p1));20}

21return

str.tostring();22}

23 }

public

class

solution

else

str.setcharat(p2--,str.charat(p1--));

}return

str.tostring();

}}

更新20180303

1

#-*- coding:utf-8 -*-

2class

solution:3#

s 源字串

4def

replacespace(self, s):5#

write code here

6 s =list(s)

7 cnt =0

8for i ins:9

if i=='':

10 cnt+=1

11 i = len(s)-1

12 s = s + ['

']*cnt*2

13 j = len(s)-1

14while i>=0 and j>=0:

15if(s[i]!=''):

16 s[j] =s[i]

17 i-=1;j-=1

18else

:19 s[j] = '0'

20 s[j-1] = '2'

21 s[j-2] = '%'

22 j-=3

23 i-=1

24return

''.join(s)

2526

27

trcik 

1

#-*- coding:utf-8 -*-

2class

solution:3#

s 源字串

4def

replacespace(self, s):5#

write code here

6return s.replace('

','%20')

789

4 代替字元陣列中的空格

題目描述 解析 直觀的想法是,新建乙個陣列,逐個複製,遇到空格時,寫入 20,但這需要占用額外空間。不占用額外空間的演算法是原位替換。如果我們順序的遍歷字串,當遇到空格時,用 20替換空格,這將覆蓋掉空格後面的字元 如果覆蓋前,後移剩餘字串,那麼移動的時間複雜度為o n 2 因此,採用從後向前複製的...

替字串中的換空格 C 實現

時間複雜度為o n 2 的解法 思路 從頭到尾掃瞄字串,每一次碰到空格字元的時候做替換,即把1個字元替換成3個字元 我們必須要把空格後面所有的字元向後移動兩個位元組,否則就有兩個字元被覆蓋了。基於如上思路,實現如下 void solution replacespace1 char str,int l...

2 替換空格

1 題目 2 程式1 確定變換後陣列的長度,再從後往前更新陣列,記得在最開始要先加 0 class solution int newstrlen strlen spacenum 2 int j newstrlen str j 0 for int i strlen 1 i 0 i else str j...