本文最后更新于:2020年11月12日 下午

剑指Offer05.替换空格

请实现一个函数,把字符串s中的每个空格替换为”%20“。

示例1

输入: s = "We are happy."
输出: ”We%20are%happy."

限制

0 <= s的长度 <= 10000

方法一:字符数组

由于每次替换从1个字符变成3个字符。使用字符数组可方便地进行替换。建立字符数组(长度为s的长度的3倍),这样可保证字符数组可以容纳所有替换后的字符。

  • 获得s的长度length
  • 创建字符数组array,其长度为length * 3
  • 初始化size为0,size表示替换后的字符串的长度
  • 从左到右遍历字符串s
    • 获得s的当前字符c
    • 如果字符c是空格,则令array[size] = ‘%’,array[size+1] = ‘2’,array[size+2] = ‘0’,并将size的值加3
    • 如果字符c不是空格,则令array[size] = c,并将size的值加1
  • 遍历结束之后,size的值等于替换后的字符串的长度,从array的前size个字符创建新字符串,并返回新字符串
class Solution:
    def relaceSpace(self, s):
		return s.replace('','%20')

复杂度分析

  • 时间复杂度:O(n)。遍历字符串s一遍。
  • 空间复杂度:O(n)。额外创建字符数组,长度为s的长度的3倍。

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!

剑指Offer06-从尾到头打印链表 上一篇
剑指Offer03-数组中重复的数字 下一篇