美文网首页
剑指offer(2):替换空格

剑指offer(2):替换空格

作者: 薛皓哲 | 来源:发表于2017-08-09 08:57 被阅读19次

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


请实现一个函数,将一个字符串中的空格替换成“%20”。
例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
20170807150210874682688.png
  • 思路:
    1. 遍历字符串 找出空格的总数
    2. 替换后的字符串长度为:原来长度加上2*空格的数目
    3. 定义两个指针 一个从原始字符串末尾 一个从替换后字符串尾部 从后向前 如果不是空格 将指向的字符复制到替换后字符串中,两个指针向前移动一格;如果是空格,原始指针先前移动一格,替换后的指针移动三格,插入字符串‘%20’
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Created by xuehz on 2017/8/7

class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
        if type(s) != str:
            return
        return s.replace(' ', '%20')

    def replaceSpace1(self, s):
        if s == None:
            return None
        if type(s) != str:
            return
        if len(s) == 0:
            return
        result = ''
        for item in s:
            if item.isspace():
                result = result + '%20'
            else:
                result = result + item
        return result

    # 书中给的思路
    def replaceSpace2(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] #[None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, 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)


if __name__ == '__main__':
    s = 'we are happy'
    test = Solution()
    print test.replaceSpace(s)
    print test.replaceSpace1(s)
    print test.replaceSpace2(s)

"""
语法:isinstance(object,type)

作用:来判断一个对象是否是一个已知的类型。

其第一个参数(object)为对象,第二个参数(type)为类型名(int...)或类型名的一个列表((int,list,float)是一个列表)。
其返回值为布尔型(True or flase)。
"""

相关文章

  • 剑指Offer 2 :替换空格

    题目 将字符串中的每个空格都替换为“%20” 虽然我的代码不是这么写的,但是还是来记录下这个题的算法思路:We a...

  • 剑指offer(2):替换空格

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

  • 剑指offer #2 替换空格

    剑指offer 题集 https://www.jianshu.com/nb/32116527 题目描述:请实现一个...

  • 剑指Offer - 2 - 替换空格

    题目描述 替换空格 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Hap...

  • 剑指 offer:2、 替换空格

    2. 替换空格 题目描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are ...

  • 每日一练(2):替换空格

    title: 每日一练(2):替换空格 categories:[剑指offer] tags:[每日一练] date...

  • 剑指Offer.C++.code1-5

    剑指offer 代码实现 C++剑指Offer 1. 二维数组中的查找 2. 替换空格 3. 从尾到头打印链表 4...

  • [剑指offer] 替换空格

    本文首发于我的个人博客:尾尾部落 题目描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符...

  • 剑指offer - 替换空格

    题目 请实现一个函数,把字符串中的每个空格都换成%20。例如:输入"We are happy",则输出“We%20...

  • 《剑指offer》替换空格

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

网友评论

      本文标题:剑指offer(2):替换空格

      本文链接:https://www.haomeiwen.com/subject/gmlfrxtx.html