python替换空格

请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 解答思路
【python替换空格】此题用python解答最简单的方法是使用字符串中的自带替换方法——replace
还有一种方法则需要将在每次遍历到空格时,在尾部填充两个任意字符,这样需要两个指针P1和P2,令P1指向字符串原本的末尾位置,P2指向字符串现在的末尾位置,P1和P2同时从最后向前遍历,当P1遍历到一个空格时,令P2指向的位置依次填充02%(%20的逆序),若没有遍历到空格就填充上P1指向字符的值,这里选择从后往前遍历是为了 改变P2所指向的内容时,不会影响到P1遍历原来字符串的内容
解题代码1

# -*- coding:utf-8 -*- class Solution: # s 源字符串 def replaceSpace(self, s): # write code here return s.replace(' ','%20')

解题代码2
class Solution: def replaceSpace(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#新字符串长度为原始字符串长度+空格数*2 newStr = newStrLen*[None]#构造长度为newStrLen的空列表 indexOfOriginal,indexOfNew = len(s) - 1,newStrLen - 1 #原始索引下标=原始字符串长度-1,新索引下标=新字符串长度-1 while indexOfNew >= 0 and indexOfOriginal <= indexOfNew: #两个列表同时循环,从后向前遍历 if s[indexOfOriginal] == ' ': #判断原始列表遇到空格时 newStr[indexOfNew-2:indexOfNew + 1] = ['%','2','0'] #在新列表的从后往前依次插入‘0’,‘2’,‘%’ indexOfNew -= 3#由于插了三个字符,减三 indexOfOriginal -= 1 #往前循环 else: #没有遇到空格则新字符串的相应位置和原始字符串一致 newStr[indexOfNew] = s[indexOfOriginal] indexOfNew -= 1 indexOfOriginal -= 1 return ''.join(newStr) #若原始字符串为 we are happy,则newStr是['W', 'e', '%', '2', '0', 'A', 'r', 'e', '%', '2', '0', 'H', 'a', 'p', 'p'] ,用这一步连接成新字符串 ***

    推荐阅读