暴力法: 從頭到尾掃瞄,遇到空格就替換,並將空格之後的所有字元都後移兩個位元組。時間複雜度o(n^2).
優化:先遍歷一遍字串,這樣就可以統計出字串空格的總數,並可以由此計算出替換之後的字串的總長度。每替換乙個空格,長度增加2,因此替換以後字串的長度等於原來的長度加上2乘以空格數目。
之後,我們從字串的尾部開始複製和替換。首先準備兩個指標,p1和p2,p1指向原始字串的末尾,而p2指向替換之後的字串的末尾。 向前移動指標p1,逐個把它指向的字元複製到p2指向的位置,直到碰到第乙個空格為止。碰到第乙個空格之後,把p1向前移動1格,在p2之前插入字串"%20"。由於"%20"的長度為3,同時也要把p2向前移動3格。
//
// created by apaul on 2019/10/23.
//class
solution
int newlength = i+ numspace*2;
// 新的字串長度
for(
int j=i; j>=
0, newlength>=0;
)else
str[newlength--
]= str[j]
; j--;}
}};
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 替換空格
c class solution 替換空格 int newlength originallength 2 numberofblank if newlength 1 length return char p1 str originallength 字元指標指向原始字串的末尾 char p2 str n...
改變2 替換空格
從前到後統計空格的個數,然後從後到前來逐個插入。一定要記得如果是不知道是哪齣問題的時候就舉個例子,然後從前到後跑一遍 public class solution int i str.length 1 int newlen str.length count 2 int newindex newlen ...