题目难度: 简单
原题链接
今天继续更新程序员面试金典系列, 大家在公众号 算法精选 里回复 面试金典 就能看到该系列当前连载的所有文章了, 记得关注哦~
URL 化。编写一种方法,将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的“真实”长度。(注:用 Java 实现的话,请使用字符数组实现,以便直接在数组上操作。)
输入:"Mr John Smith ", 13
输出:“Mr%20John%20Smith”
输入:" “, 5
输出:”%20%20%20%20%20"
字符串长度在[0, 500000]范围内。
class Solution:
def replaceSpaces(self, S: str, length: int) -> str:
# 不使用内置函数, 模拟C语言的字符数组处理
# 注意length是原来字符串的有效长度
# 计算空格数目, 分配好新数组长度
newlen = length
blank = 0
for c in S[:length]:
if c == ' ':
blank += 1
newlen += blank * 2
# res是模拟的字符数组
res = [''] * newlen
i = newlen - 1
# 从右向左遍历
for c in S[:length][::-1]:
if c == ' ':
res[i] = '0'
res[i - 1] = '2'
res[i - 2] = '%'
i -= 3
else:
res[i] = c
i -= 1
return ''.join(res)
大家可以在下面这些地方找到我~
我的知乎专栏
我的头条号
我的 CSDN
我的 Leetcode
我的牛客网博客
我的公众号: 算法精选, 欢迎大家扫码关注~