題目描述:
請實現一個函數,將一個字符串中的空格替換成“%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; } }
測試結果: