c++
class
solution
// 替換空格
int newlength = originallength +
2* numberofblank;
if(newlength+
1>length)
return
;char
*p1 = str+originallength;
// 字元指標指向原始字串的末尾
char
*p2 = str+newlength;
// 字元指標指向替換後字串的末尾
while
(p1!=p2)
else
p1--;}
}};
class
solution
/*original_length為字串str的實際長度*/
int original_length =0;
//原始長度
int number_blank =0;
//空格數
int i=0;
while
(str[i]
!='\0'
)/*new_length為把空格替換成'%20'之後的長度*/
int new_length = original_length +
2* number_blank;
int p1 = original_length;
//原始字串末尾索引值
int p2 = new_length;
//計算長度後的字串末尾索引值
/*index_original指標開始向前移動,如果遇到空格,替換成'%20',否則進行複製操作*/
while
(p1 >=
0&& p2 > p1)
else
p1--;}
}};
python
class
solution
:# s 源字串
defreplacespace
(self, s)
:# write code here
return s.replace(
' ',
'%20'
)
# -*- coding:utf-8 -*-
class
solution
:# s 源字串
defreplacespace
(self, s)
:# write code here
#string(區別於list)是一種不可變的資料型別
if s==
none
:return
; origianl_length=
len(s)
number_blank=
0for i in s:
if i==
' ':
number_blank+=
1 p1=origianl_length-
1 p2=origianl_length+
2*number_blank-
1
new_s=
[' ']*
(p2+1)
while
(p1!=-1
):if s[p1]
==' '
: new_s[p2]
='0'
p2-=
1 new_s[p2]
='2'
p2-=
1 new_s[p2]
='%'
p2-=
1else
: new_s[p2]
=s[p1]
p2-=
1 p1-=
1return
''.join(new_s)
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...
2 替換空格
暴力法 從頭到尾掃瞄,遇到空格就替換,並將空格之後的所有字元都後移兩個位元組。時間複雜度o n 2 優化 先遍歷一遍字串,這樣就可以統計出字串空格的總數,並可以由此計算出替換之後的字串的總長度。每替換乙個空格,長度增加2,因此替換以後字串的長度等於原來的長度加上2乘以空格數目。之後,我們從字串的尾部...
改變2 替換空格
從前到後統計空格的個數,然後從後到前來逐個插入。一定要記得如果是不知道是哪齣問題的時候就舉個例子,然後從前到後跑一遍 public class solution int i str.length 1 int newlen str.length count 2 int newindex newlen ...