劍指offer 05 節省空間空格替換

2021-10-21 13:45:48 字數 828 閱讀 1548

直接建立乙個新陣列來做這個題很容易。我們也可以在原陣列上操作來節省空間。操作方法為先統計空格數目,然後將陣列擴容,之後倒敘複製即可。由於字串不支援單位賦值,只好轉換成list操作。此外,對str連續賦值可以使用ljust,很快。

class

solution

:def

replacespace

(self, s:

str)

->

str:

s =list

(s) num =

0for c in s:

if c ==

' ':

num +=

1 s.extend(

['*'

]*num*2)

p1, p2 =

len(s)-1

,len

(s)-num*2-

1while p2 >=0:

if s[p2]

==' '

: s[p1-

2:p1+1]

='%20'

p1 -=

3else

: s[p1]

= s[p2]

p1 -=

1 p2 -=

1return

''.join(s)

相關題目:兩個排序陣列融合

這題很容易想到從頭到尾生成的方法。按照本題思路,也可以考慮從尾到頭的方法節省空間。和上述方法相同,兩個指標,最大的就插入後面,肯定是不會覆蓋的,因為空間正好夠。

劍指 Offer 05 替換空格

劍指 offer 05.替換空格 請實現乙個函式,把字串 s 中的每個空格替換成 20 示例 1 方法一 遍歷新增 由於每次替換從 1 個字元變成 3 個字元,使用字元陣列可方便地進行替換。建立字元陣列地長度為 s 的長度的 3 倍,這樣可保證字元陣列可以容納所有替換後的字元。class solut...

劍指 Offer 05 替換空格

請實現乙個函式,把字串 s 中的每個空格替換成 20 示例 1 限制 0 s 的長度 10000 我的解答 class solution 這道題還是很簡單的,使用replace或者遍歷整個字串,每到空格就新增 20即可。不過在做完後發現,replace和replaceall方法具有差別,replac...

劍指Offer 05 替換空格

請實現乙個函式,把字串 s 中的每個空格替換成 20 示例 1 思路 因為string 的不可性,每一次在 res 後面新增字元,都要重新開闢空間 複製之前的值,再在末尾新增,所以效率很低,如下 改進 利用 stringbuffer stringbuilder 的特性,底層會申請乙個預設 16 位元...