注:本文的代码实现使用的是 JS(JavaScript),为前端中想使用JS练习算法和数据结构的小伙伴提供解题思路。(使用的编译环境是JavaScript Node,其实跟JS没啥区别)
描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
示例:
示例1
输入:"We Are Happy"
返回值:"We%20Are%20Happy"
解题思路
1. js自带的replace函数
replace函数可以传两个参数,一个是被替换的字符或字符串,另一个是要替换为的字符或字符串。其中,第一个参数还可以是正则表达式,去匹配符合模式的字符串。这道题中,因为是要把所有的空格都进行替换,因此第一个参数最好使用正则表达式。
正则中,//
内部若为字符串,则直接匹配固定的字符串,如\a\
则只会匹配字符a
,这道题需要匹配空格,在正则中的符号为\s
function replaceSpace( s ) {
// g的意义是全局匹配,若没有g,则只会替换一个空格
return s.replace(/\s/g, "%20")
}
2. 遍历字符串
其实最好不用直接在原有的基础上进行替换,因为这个题目是三个字符替换一个字符,要是在原有字符串上直接替换,则会频繁地移动替换位置后面字符,效率较低。我们可以使用一个空的字符串result
去保存最终结果,遍历原始字符串中的每一个字符,若为空格,则在result
后加上一个%20
;否则直接将这个字符追加到result
后面即可。
function replaceSpace( s ) {
let result = ""
// 遍历字符串
for(let char of s){
// 若为空格,则替换
if(char === ' ') result += "%20"
// 不是空格,则直接追加
else result += char
}
return result
}