題目描述:
請實現一個函數,將一個字符串中的空格替換成“%20”。例如,當字符串為We Are Happy.則經過替換之後的字符串為We%20Are%20Happy。
解題思路:
本題中需要注意,新的字符串的長度要比舊的字符串長度長,這意味著,從前往後替換的話,每更換一次,後面的字符就要向後移動。因此,在替換的過程中需要考慮到時間復雜度和空間復雜度的問題。
public class Solution {
public String replaceSpace(StringBuffer str) {
int spaceNum = 0;
//1.先計算出字符串中的空格數
for(int i = 0; i < str.length(); i ++){
if(str.charAt(i) == ' '){
spaceNum ++;
}
}
//舊數組下標
int indexold = str.length() -1;
//新數組下標
int indexnew = str.length() + 2*spaceNum -1;
int index = indexnew;
String str1 = "";
//定義新的數組
char[] strArr = new char[indexnew+1];
for(int j = indexold; j >= 0; j --){
if(str.charAt(j) != ' '){
strArr[index] = str.charAt(j);
index--;
}else{
strArr[index] = '0';
strArr[index-1] = '2';
strArr[index-2] = '%';
index-=3;
}
}
// strArr[0] = str.charAt(0);
//將字符數組轉變為String
for(int k = 0; k < strArr.length; k++){
str1+=strArr[k];
}
return str1;
}
}
測試結果:
