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