码迷,mamicode.com
首页 > 其他好文 > 详细

剑指Offer 2. 替换空格 (字符串)

时间:2018-10-11 22:37:08      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:inter   str   http   长度   res   替换   add   pen   self   

题目描述

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

题目地址

https://www.nowcoder.com/practice/4060ac7e3e404ad1a894ef3e17650423?tpId=13&tqId=11155&tPage=1&rp=2&ru=%2Fta%2Fcoding-interviews&qru=%2Fta%2Fcoding-interviews%2Fquestion-ranking

思路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. 替换空格 (字符串)

标签:inter   str   http   长度   res   替换   add   pen   self   

原文地址:https://www.cnblogs.com/huangqiancun/p/9775425.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!