替換空格(Python and C 解法)

2022-08-24 19:36:12 字數 2228 閱讀 7022

pyhon中有很多非常方便的替換操作,如:

1

return s.replace('

', '

%20') #

直接replace替換就行

1 s = s.split("")

2return

"%20

".join(s)

1 strlen =len(s)

2 newstr =

3for i in

range(strlen):

4if s[i] == "":

%20")6

else:7

8return

''.join(newstr) #''.join()表示什麼也不新增;如果沒有該句,則返回的是乙個列表

上述解法操作上很方便,但是涉及到了大量的字元重複搬移工作,且嚴格來說,題目需要自己實現乙個函式實現該替換功能。

如果想降低複雜度,需要將所有的字元搬運次數降低為1次,時間複雜度變為o(n)。

方法是:先統計源字串的長度l1和空格個數k,那麼替換20%之後的新字串長度l2 = l1 + 2*k。然後使用兩個指標,乙個p1指向源字串的末尾,乙個p2指向新字串的末尾,逐個複製p1指向的字元給p2,直到p1遇到第乙個空格,此時p1往前移一位,p2移動3位,插入20%。重複上述過程,直到兩個指標相遇,代表空格已經插完。

1

class

solution:

2def

replacespace(self, s):

3 s_len = len(s) #

源字串長度

4 n_space = 0 #

空格計數

5if s is none or s_len ==0:

6return""7

8for i in range(s_len): #

統計空格數量

9if s[i] == '':

10 n_space += 1

11 s_new_len = s_len + 2 * n_space #

新串的長度

1213

if s_new_len == s_len: #

如果沒有空格,直接返回源串

14return

s15 s_new = [0] * s_new_len #

新串16

17while s_len >= 0 and s_new_len >=s_len:

18if s[s_len-1] != '':

19 s_new[s_new_len - 1] = s[s_len - 1]

20 s_new_len -= 1

21 s_len -= 1

22else

:23 s_len -= 1

24 s_new[s_new_len-1] = '0'

25 s_new_len -= 1

26 s_new[s_new_len-1] = '2'

27 s_new_len -= 1

28 s_new[s_new_len-1] = '%'

29 s_new_len -= 1

30return

''.join(s_new)

1

class

solution

13int orilentg = index, newlength = orilentg + 2 *spacecount;

1415

if(spacecount == 0)16

return;17

18while (orilentg >= 0 && newlength >=orilentg)

24else30}

31return;32

}33 };

jquery 替換空格

如果是用php替換所有的空格,可以直接這樣寫 srt str replace str 替換所有的空格.但自己有js這樣 str str.replace 寫替換空格的時候,打乙個空格可以替換,如果打兩個空格以上,就不可以了。js去除空格的方法目前共有12種 實現1 string.prototype.t...

O n 實現替換空格

題目 請實現乙個函式,把字串中的每個空格替換成 20 要求時間複雜度為o n 思路 我們從字串的後面開始複製和替換。首先準備兩個指標,p1和p2。p1指向原始字串的末尾,而p2指向替換之後的字串的末尾 如圖 a 所示 接下來我們向前移動指標p1,逐個把它指向的字元複製到p2指向的位置,直到碰到第乙個...

替換空格(java)

建立乙個空的字串newstr,掃瞄當前字串,如果是空白符則替換成 20 追加到newstr中 如果是其他字元則追加到newstr中 處理物件 stringbuffer str 定義資料型別 1.stringbuilder newstr 該物件用於儲存結果 2.string replacestr 20...