1.問題描述
請實現一個函數,把字符串 s 中的每個空格替換成"%20"。
示例 1:
輸入:s = “We are happy.”
輸出:“We%20are%20happy.”
2.解題思路
由于每次替換從 1 個字符變成 3 個字符,使用字符數組可方便地進行替換。建立字符數組地長度為 s 的長度的 3 倍,這樣可保證字符數組可以容納所有替換后的字符。
1.獲得 s 的長度 length
2.創建字符數組 array,其長度為 length * 3
3.初始化 size 為 0,size 表示替換后的字符串的長度
4.從左到右遍歷字符串 s
-
獲得 s 的當前字符 c
-
如果字符 c 是空格,則令 array[size] = ‘%’,array[size + 1] = ‘2’,array[size + 2] = ‘0’,并將 size 的值加 3
-
如果字符 c 不是空格,則令 array[size] = c,并將 size 的值加 1
5.遍歷結束之后,size 的值等于替換后的字符串的長度,從 array 的前 size 個字符創建新字符串,并返回新字符串
時間復雜度:O(n) 遍歷字符串 s 一遍。
空間復雜度:O(n) 額外創建字符數組,長度為 s 的長度的 3 倍。
class Solution {public String replaceSpace(String s) {int length = s.length();char[] array = new char[length * 3];int size = 0;for (int i = 0; i < length; i++) {char c = s.charAt(i);if (c == ' ') {array[size++] = '%';array[size++] = '2';array[size++] = '0';} else {array[size++] = c;}}String newStr = new String(array, 0, size);return newStr;}
}