思路:Python列表中实现字符串的替换,涉及到频繁的插入操作,在数据结构中线性表分为顺序表和链表,顺序表的适合频繁的查询,链表适合频繁的插入和删除。综上所述,本题使用链表来实现。

我们从字符串的后面开始复制和替换,设置P1和P2指针,其中P1指向原来字符串的尾部,P2指向替换后字符串的尾部。移动P1指针,依次将P1指向的字符复制到P2,直到遇到第一个空格,在P2之前插入%20,同时P2指针向前移动三次。直到P1和P2指针相遇,则表示替换完毕。

所有的字符都复制一次,时间复杂度为O(n)。

代码:

class Solution:
# s 源字符串
def replaceSpace(self, s):
# write code here
str_array = list(s) # 将字符串转为列表
origin_str_length = len(str_array)#列表长度
origin_index = origin_str_length - 1#尾指针
new_str_array = []
while origin_index >= 0:#终止条件
if str_array[origin_index] != ' ':
new_str_array.insert(0, str_array[origin_index])
else:
new_str_array.insert(0, '%20')
origin_index -= 1
return "".join(new_str_array) # 将列表转为字符串

最新文章

  1. VIM教程
  2. Django进阶(三)
  3. C语言-纸牌计算24点小游戏
  4. 及时取消代码中的AsyncTask
  5. Python先合并再排序
  6. sqoop笔记
  7. 【SQL】姗姗来迟的SQL Server 安装图解
  8. POJ2253 Frogger
  9. 剑指offer--面试题12
  10. 初探 插头DP
  11. Solidity基础
  12. css3实现切片动画
  13. EF学习和使用综合
  14. 深度学习-tensorflow学习笔记(1)-MNIST手写字体识别预备知识
  15. openerp7.0接收邮件时别名区分大小写问题,以及处理非别名域邮件问题解决方法
  16. Maven:Generating Project in Batch mode 卡住问题
  17. Redis C#入门
  18. 亚马逊MWS开发套路演示
  19. 浅谈HTML5中canvas中的beginPath()和closePath()的重要性
  20. linux查找进程id端口占用和杀死进程

热门文章

  1. 在YII2中使用redis
  2. Vtk读取并显示保存图像
  3. PhotoZoom Classic 7中的新功能
  4. VGG 19
  5. IdentityServer4-HybridAndClientCredentials
  6. Python笔记16-------类
  7. Oracle 知识积累
  8. Selenium+Python+jenkins搭建web自动化测测试框架
  9. [bzoj 2726] 任务安排 (斜率优化 线性dp)
  10. Btrfs 文件系统