python替换空格

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

解答思路

此题用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'] ,用这一步连接成新字符串
***

你可能感兴趣的:(python替换空格)