题目
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
示例 1:
输入:s = "We are happy."
输出:"We%20are%20happy."
限制:
0 <= s 的长度 <= 10000
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/ti-huan-kong-ge-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
方法一:辅助数组
首先容易想到的是,我们新建一个空字符串,再遍历s,遇到非空格,就将原值加到空字符串尾部;遇到空格,则将%20加到尾部。
AC代码

时空复杂度
时间复杂度:一次数组遍历达到要求,O(N)
空间复杂度:借助辅助数组 O(N)
方法二:扩充数组(原地)
可不可以原地对旧数组就行修改,使得达到题目要求呢,当然是可以的。步骤如下:
统计s中空格出现的次数count
对s进行扩充,每个空格需要扩展的长度为:‘%20’-‘ ’=2 ,s需要扩充的长度为count*2。
从后向前,对数组进行填充,将空格替换为%20。 为什么不是从前往后? 因为从前往后移动元素的时间复杂度为
。
AC代码

时空复杂度
时间复杂度:O(N)
空间复杂度:O(1)