python剑指offer替换空格_替换空格-L_XS的博客-51CTO博客

牛客网 《剑指offer》

时间限制:1秒 空间限制:32768K 热度指数:378402

本题知识点: 字符串

题目描述

请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

解题思路

'''

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

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

'''

-- coding:utf-8 --

class Solution:

s 源字符串

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

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、付费专栏及课程。

余额充值