python中空格替换_Python替换空格

本文介绍了多种在Python中将字符串中的空格替换为'%20'的方法,包括使用append、创建新字符串、replace方法以及利用额外空间的解决方案。详细解释了每种方法的实现原理和效率,并给出了示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果直接每次遇到空格添加'%20',那么空格后面的数字就需要频繁向后移动。遇到这种移动问题,我们可以尝试先给出最终需要的长度,然后从后向前扫描,同时给定两个指针来保证定位。逆向思维'''

请实现一个函数,将一个字符串中的空格替换成“%20”。

例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

'''

# -*- coding:utf-8 -*-

class Solution:

# s 源字符串

# 使用append一次遍历即可替换

# 由于list的append是O(1)的时间复杂度,除了扩容所导致的时间损耗,该算法复杂度为O(n)

def replaceSpaceByAppend(self, s):

string = list(string)

stringReplace = []

for item in string:

if item == ' ':

stringReplace.append('%')

stringReplace.append('2')

stringReplace.append('0')

else:

stringReplace.append(item)

return "".join(stringReplace)

# 创建新的字符串进行替换

def replaceSpace1(self, s):

tempstr = ''

if type(s) != str:

return

for c in s:

if c == ' ':

tempstr += '%20'

else:

tempstr += c

return tempstr

# 简单代码替换

# 在Python中str类型是不可变的类型, 使用replace语句会生成一个新的str, 原始的s还是带空格的str变量

def replaceSpace2(self, s):

if type(s) != str:

return

return s.replace(' ', '%20')

# 书中给的思路

# 判断输入类型的时候,isinstance必须首先判断,因为如果输入为integer的话,没有len,就会直接报错

def replaceSpace3(self, s):

if not isinstance(s,str) or len(s) <= 0 or s == None:

return ""

spaceNum = 0

for i in s:

if i == " ":

spaceNum += 1

newStrLen = len(s) + spaceNum * 2

newStr = newStrLen * [None]

indexOfOriginal, indexOfNew = len(s) - 1, newStrLen - 1

while indexOfNew >= 0 and indexOfNew >= indexOfOriginal:

if s[indexOfOriginal] == ' ':

newStr[indexOfNew-2:indexOfNew+1] = ['%', '2', '0']

indexOfNew -= 3

indexOfOriginal -= 1

else:

newStr[indexOfNew] = s[indexOfOriginal]

indexOfNew -= 1

indexOfOriginal -= 1

return "".join(newStr)

s = 'we are happy'

test = Solution()

print(test.replaceSpace1(s))

print(test.replaceSpace2(s))

print(test.replaceSpace3(s))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值