如果直接每次遇到空格添加'%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))

python中空格替换_Python替换空格相关推荐

  1. python正则匹配空格+数字+空格_详解Python中正则匹配TAB及空格的小技巧

    详解Python中正则匹配TAB及空格的小技巧 发布时间:2020-10-15 08:38:48 来源:脚本之家 阅读:94 作者:杰瑞26 在正则中,使用.*可以匹配所有字符,其中.代表除\n外的任 ...

  2. python中的常量_Python中的变量和常量

    本文主要介绍Python中的变量和常量,包括变量的命名规范,使用注意事项 -------------- 完美的分割线 --------------- 1.变量 1.1.变量理解 1)什么是变量 变量即 ...

  3. python中查找字符串_python中字符串操作--截取,查找,替换

    python中,对字符串的操作是最常见的,python对字符串操作有自己特殊的处理方式. 字符串的截取 python中对于字符串的索引是比较特别的,来感受一下: s = '123456789' #截取 ...

  4. python中一般使用几个空格表示缩进_python中使用空格还是使用 Tab键缩进的建议...

    对于程序员来说,其实Tab和空格远远不只是"立场"问题那么简单. 在不同的编辑器里tab的长度可能不一致,所以在一个编辑器里用tab设置缩进后,在其它编辑器里看可能缩进就乱了.空格 ...

  5. python中一般使用几个空格表示缩进_为什么Python pep-8强烈建议使用标签上的空格来缩进?...

    为什么Python pep-8强烈建议使用标签上的空格来缩进? 我在Stack Overflow和PEP 8上看到,建议仅在Python程序中使用空格进行缩进. 我能理解一致压痕的必要性,我感到痛苦. ...

  6. python修改rgb值_Python替换或更改给定RGB或十六进制值的HSV值

    关于RGB和HSV空间之间的关系,我建议您看看这个blog post.这个Wikipedia page对HSV及其与RGB空间的关系有详细的描述.在 python中的大多数可视化库(包括matplot ...

  7. python中while嵌套循环_python中的while循环

    循环 目标 程序的三大流程  while 循环基本使用  break 和 continue  while 循环嵌套 01. 程序的三大流程 在程序开发中,一共有三种流程方式: 顺序 -- 从上向下,顺 ...

  8. python中定义字符串_python中的字符串

    python中的字符串一旦定义,则不可以修改 python中的原始字符串 即 在字符串前面加小写字母r 比如:打印输出C:\Program Files\Microsoft Games python中的 ...

  9. python中格式化字符串_Python中所有字符串格式化的指南

    python中格式化字符串 Strings are one of the most essential and used datatypes in programming. It allows the ...

最新文章

  1. 云计算之路-道歉,无地自容的:4月7日14:15~18:35网站故障给大家带来麻烦了
  2. db browser连接mysql_MyEclipse DB Browser 连接 MySQL 配置 mysql select
  3. bash-shell高级编程--引用
  4. 过滤选择器——可见性过滤选择器
  5. 成都内推 | 腾讯游戏王者荣耀算法团队招聘算法实习生
  6. Linux下的压缩文件剖析
  7. 不到600美元,即可获取一套MF Porting kit 3.0
  8. 《Algorithms》Comparable 实现排序大全
  9. 使用多线程与不使用多线程访问同一个网址实例对比
  10. python—模块-sys
  11. “技术天才”李一男已出狱:曾被视为华为接班人!华中科大少年班,27岁华为副总裁,曾任百度CTO...
  12. 【作业报告】作业5 四则运算 测试与封装 5.1
  13. Arduino的详细介绍(基于Mega2560)(分文)——pinMode,digitalWrite/digitalRead()
  14. 38.JavaScript中异步与回调的基本概念,以及回调地狱现象
  15. mac python 连接oracle数据库(mac cx_Oracle.DatabaseError: DPI-1047: )
  16. layui时间范围控件限制时间
  17. Linux已挂载的硬盘无法访问
  18. SimulinkSTM32开发(一)开发环境搭建
  19. 怎么理解——用户不是人
  20. matlab regress

热门文章

  1. FD.io VPP用户文档:会话层架构与VPP应用
  2. DPDK服务核心(coremask)
  3. java jsp网页计算器_JSP实现计算器功能(网页版)
  4. Django:cmd虚拟环境及第一个project、Pycharm虚拟环境及第一个project、Not Found favicon.ico、Windows命令行创建虚拟环境、Django版本选择
  5. python 求子字符串_求子串-KPM模式匹配-NFA/DFA
  6. 对java的集合的理解_谈谈你对java集合类的理解
  7. sheet中没有getcolumns()方法吗_家庭亲子教育中的八种方法,你做到了吗?
  8. OpenShift 4 - 部署 RabbitMQ 集群
  9. OpenShift 4 - 查看关键证书到期日期
  10. 容器入门(4) - skopeo