持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第 3 天,点击查看活动详情
URL化
URL化。编写一种方法,将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的“真实”长度。(注:用Java实现的话,请使用字符数组实现,以便直接在数组上操作。)
示例 1:
输入:"Mr John Smith ", 13
输出:"Mr%20John%20Smith"
示例 2:
输入:" ", 5
输出:"%20%20%20%20%20"
提示:
- 字符串长度在 [0, 500000] 范围内。
思路分析
方法一
- 题目理解了好久,完全不明白入参中的
length
是做什么用的,反复阅读后才明白,原来length
表示字符串的真实长度,那也就是意味着在length
以外的空格不作处理; - 在读懂题目后,可以使用字符串的
substr
方法截取length
长度的字符串,因为除此之外的不作处理; - 拿到需要处理的字符串后就比较简单了,使用字符串的
replaceAll
方法,将空格都替换成%20
即可。
方法二
- 按照方法一的方法获取要处理的真实的字符串;
- 使用
encodeURI
方法,会自动将空格转换成%20
。
方法三
- 按照方法一的方法获取要处理的真实的字符串;
- 将字符串按照空格分隔后得到一个数组,然后使用
%20
进行join
操作,可以得到需要的结果。
AC 代码
方法一
/**
* @param {string} S
* @param {number} length
* @return {string}
*/
var replaceSpaces = function(S, length) {
return S.substr(0, length).replaceAll(' ', '%20')
};
结果:
- 执行结果: 通过
- 执行用时:108 ms, 在所有 JavaScript 提交中击败了60.38%的用户
- 内存消耗:63.9 MB, 在所有 JavaScript 提交中击败了86.60%的用户
- 通过测试用例:32 / 32
方法二
/**
* @param {string} S
* @param {number} length
* @return {string}
*/
var replaceSpaces = function(S, length) {
return encodeURI(S.substr(0, length))
};
结果:
- 执行结果: 通过
- 执行用时:68 ms, 在所有 JavaScript 提交中击败了98.97%的用户
- 内存消耗:49.1 MB, 在所有 JavaScript 提交中击败了97.50%的用户
- 通过测试用例:32 / 32
方法三
/**
* @param {string} S
* @param {number} length
* @return {string}
*/
var replaceSpaces = function(S, length) {
return S.substr(0, length).split(' ').join('%20')
};
结果:
- 执行结果: 通过
- 执行用时:84 ms, 在所有 JavaScript 提交中击败了96.61%的用户
- 内存消耗:57.3 MB, 在所有 JavaScript 提交中击败了92.63%的用户
- 通过测试用例:32 / 32