面试题05.替换空格_hn

2020-03-18  本文已影响0人  1只特立独行的猪

题目描述

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

示例

示例 1:

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

解答方法

方法一:

思路

代码

class Solution:
    def replaceSpace(self, s: str) -> str:
        res = []
        for i in s:
            if i == ' ':
                res.append('%20')
            else:
                res.append(i)
        return ''.join(res)

时间复杂度

O(N): 遍历使用 O(N) ,每轮添加(修改)字符操作使用 O(1) ;

空间复杂度

O(N) : Python 新建的 list 使用了线性大小的额外空间。

方法二:双指针法

思路

代码

class Solution:
    def replaceSpace(self, s: str) -> str:
        if not s:
            return ''
        s = list(s)
        #获取空格数目
        blank_num = 0
        for i in s:
            if i == ' ':
                blank_num+=1
        pre_len= len(s)
        #扩展源字符串中长度
        s.extend([None for i in range(2*blank_num)])
        #双指针从后往前扫描
        p1 = pre_len - 1
        p2 = len(s) - 1
        while p1 >=0 and p1!= p2:
            if s[p1] == ' ':
                s[p2-2] = '%'
                s[p2-1] = '2'
                s[p2] = '0'
                p2 -= 3
            else:
                s[p2] = s[p1]
                p2 -= 1
            p1 -=1
        return ''.join(s)
上一篇 下一篇

猜你喜欢

热点阅读