【分析】双指针。
- 首先遍历数组,
n
记录数组中空格的数量,最后往数组后面加2n个长度的数组元素空间。往这最后2n个长度内填入原数组x的最后2n个字符。 - 利用
l,r
两个下标指针,从后面开始,循环l>0
:将前面l
指向的非空字符移动到后面的r
中,l-1,r-1
;当l
指向的是空字符,则r-3~r
(包括r)指向的字符应替换为"%20",l-1,r-3
x='we are happy.'
x=list(x)
n=0
for i in range(len(x)):
if x[i]==' ':
n=n+1
x.extend(x[-2*n:])
l,r=len(x)-4*n-1,len(x)-2*n-1
while l>0:
if x[l]!=' ':
x[r]=x[l]
l-=1
r-=1
print("Y")
else:
x[r-2:r+1]='%20'
r-=3
l-=1