题目描述
URL化。编写一种方法,将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的“真实”长度。(注:用Java实现的话,请使用字符数组实现,以便直接在数组上操作。)
示例1:
输入:"Mr John Smith ", 13
输出:"Mr%20John%20Smith"
示例2:
输入:" ", 5
输出:"%20%20%20%20%20"
提示:
- 字符串长度在[0, 500000]范围内。
解法
Python3
直接利用 replace 将所有 ``替换为 %20:
class Solution:
def replaceSpaces(self, S: str, length: int) -> str:
return S[:length].replace(' ', '%20')
初始化一个空列表 chars,遍历字符串中每个字符 c,遇到空格字符时,往 chars 中追加元素 %20,否则追加 c。最后返回 ''.join(chars) 即可。
class Solution:
def replaceSpaces(self, S: str, length: int) -> str:
chars = []
for c in S[:length]:
chars.append('%20' if c == ' ' else c)
return ''.join(chars)
Java
class Solution {
public String replaceSpaces(String S, int length) {
char[] chars = S.toCharArray();
int j = chars.length;
for (int i = length - 1; i >= 0; --i) {
if (chars[i] == ' ') {
chars[--j] = '0';
chars[--j] = '2';
chars[--j] = '%';
} else {
chars[--j] = chars[i];
}
}
return new String(chars, j, chars.length - j);
}
}
JavaScript
/**
* @param {string} S
* @param {number} length
* @return {string}
*/
var replaceSpaces = function(S, length) {
return encodeURI(S.substring(0,length));
};