pyhon中有很多非常方便的替換操作,如:
1return 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%。重複上述過程,直到兩個指標相遇,代表空格已經插完。
1class
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)
1class
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...