剑指Offer 2. 替换空格 (字符串)
Posted huangqiancun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指Offer 2. 替换空格 (字符串)相关的知识,希望对你有一定的参考价值。
题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
题目地址
思路1:开辟一个新的字符串,遍历给定字符串,当字符为空格时,在新字符串后添加%20,否则,添加原字符
思路2:将字符串转换成列表,遍历字符串,当字符为空格时,依次在列表后面添加‘%‘,‘2‘,‘0‘;否则,添加原字符
思路3:如果直接每次遇到空格添加‘%20‘,那么空格后面的数字就需要频繁向后移动。遇到这种移动问题,我们可以尝试先给出最终需要的长度,然后从后向前扫描,同时给定两个指针来保证定位。
Python
# -*- coding:utf-8 -*- class Solution: # s 源字符串 def replaceSpace(self, s): # write code here if len(s) == 0: return ‘‘ # 思路1 # newString = ‘‘ # for i in s: # if i == ‘ ‘: # newString += ‘%20‘ # else: # newString += i # return newString # 思路2: # lis = list(s) # newLis = [] # for i in lis: # if i == ‘ ‘: # newLis.append(‘%‘) # newLis.append(‘2‘) # newLis.append(‘0‘) # else: # newLis.append(i) # return "".join(newLis) # 思路3 count = 0 for i in s: if i == ‘ ‘: count += 1 newLen = len(s) + count * 2 newStr = newLen * [None] indexOfNew, indexOfOri = len(newStr)-1, len(s)-1 while indexOfNew >= 0 and indexOfNew >= indexOfOri: if s[indexOfOri] == ‘ ‘: newStr[indexOfNew-2:indexOfNew+1] = [‘%‘,‘2‘,‘0‘] indexOfNew -= 3 indexOfOri -= 1 else: newStr[indexOfNew] = s[indexOfOri] indexOfNew -= 1 indexOfOri -= 1 return "".join(newStr) if __name__ == ‘__main__‘: result = Solution().replaceSpace(‘We are happy.‘) print(result)
以上是关于剑指Offer 2. 替换空格 (字符串)的主要内容,如果未能解决你的问题,请参考以下文章