这是崔斯特的第一百一十一篇原创文章
努力、奋斗 (๑• . •๑)
替换空格
题目描述
请实现一个函数,将一个字符串中的每个空格替换成 %20
。例如,当字符串为 We Are Happy
,则经过替换之后的字符串为 We%20Are%20Happy
。
思路
解法一
其实看到这道题,我最开始想到的就是字符串的replace方法,这显然不是面试官想要的答案,我就去看了下实现源码。
|
|
原来是用正则去匹配再替换的,再去看看正则替换的方法
|
|
发现用的是StringBuffer
,保证线程安全。
解法二
好了,下面步入正题,创建 StringBuilder
,遍历原字符串,遇到非空格,直接 append 到 StringBuilder
中,遇到空格则将 %20
append 到 StringBuilder
中。
|
|
解法三(推荐)
先遍历原字符串,遇到空格,则在原字符串末尾 append
任意两个字符,如两个空格。
用指针 p
指向原字符串末尾,q
指向现字符串末尾,p
, q
从后往前遍历,当 p
遇到空格,q
位置依次要 append
‘02%’,若不是空格,直接 append
p
指向的字符。
🤔思路扩展
在合并两个数组(包括字符串)时,如果从前往后复制每个数字(或字符)需要重复移动数字(或字符)多次,那么我们可以考虑从后往前复制,这样就能减少移动的次数,从而提高效率。
|
|
Python
|
|
看着都头大