Write a method to replace all spaces in a string with '%20'. You may assume that the string has sufficient space at the end to hold the additional characters,and that you are given the "true" length of the string. (Note: If implementing in Java,please use a character array so that you can perform this operation in place.)
Example 1:
Input: "Mr John Smith ", 13 Output: "Mr%20John%20Smith" Explanation: The missing numbers are [5,6,8,...], hence the third missing number is 8.
Example 2:
Input: " ", 5 Output: "%20%20%20%20%20"
Note:
0 <= S.length <= 500000
Use replace()
function.
class Solution:
def replaceSpaces(self, S: str, length: int) -> str:
return S[:length].replace(' ', '%20')
Use list:
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)
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);
}
}
/**
* @param {string} S
* @param {number} length
* @return {string}
*/
var replaceSpaces = function(S, length) {
return encodeURI(S.substring(0,length));
};
func replaceSpaces(S string, length int) string {
// return url.PathEscape(S[:length])
j := len(S)
b := []byte(S)
for i := length - 1; i >= 0; i-- {
if b[i] == ' ' {
b[j-1] = '0'
b[j-2] = '2'
b[j-3] = '%'
j -= 3
} else {
b[j-1] = b[i]
j--
}
}
return string(b[j:])
}