面试题5:替换空格

作者: 凌霄文强 | 来源:发表于2019-01-02 23:05 被阅读0次

题目描述

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

知识点

字符串


Qiang的思路V1

一看这个问题,“替换”,瞬间想到replace,简单粗暴有没有。

# -*- coding:utf-8 -*-
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
        return s.replace(' ','%20')

效果是杠杠滴,简单粗暴,但是不提倡啊。这样写代码就没什么意思了。


Qiang的思路V2

因为和C/C++不一样,不能向操作数组一样对python中的字符串进行操作,但是为了仿照C/C++的方式,尽量从原理出发实现该功能,所以使用了字符串拼接的功能,这就类似C/C++中的往字符型数组最后面添加元素,当然前提是开辟的空间足够。

# -*- coding:utf-8 -*-
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
        ss=''
        for c in s:
            if c==' ':
                ss=ss+'%20'
            else:
                ss=ss+c
        return ss

Book中思路

书上的思路挺棒的,奈何能力有限,没办法用python写出同样的代码。所以特地用C/C++实现了一下。

首先通过一次遍历找到所有的空格,记录总共出现的次数,这样就能得到转换之后的数组长度了。

然后根据此长度找到转换之后字符串最后的位置。

最后倒着开始复制,当出现空格的时候进行替换即可。

class Solution {
public:
    void replaceSpace(char *str,int length) {
        int len=0;
        for(;str[len]!='\0';len++);
        int _len=len;
        for(int i=0;i<len;i++)
            if(str[i]==' ')
                _len+=2;
        if(_len>length)
            return;
        str[_len]='\0';
        for(int i=len-1,j=_len-1;i>=0;i--)
            if(str[i]==' '){
                str[j--]='0';
                str[j--]='2';
                str[j--]='%';
            }else
                str[j--]=str[i];
    }
};

另外,在我写的python代码中并不是在原来的串上进行修改的,但是书中是在原来的串上进行修改的。

作者原创,如需转载及其他问题请邮箱联系:lwqiang_chn@163.com
个人网站:https://www.myqiang.top

相关文章

  • 替换空格

    《剑指offer》面试题5:替换空格 题目:请实现一个函数,把字符串中的每个空格替换成“%20”。例如,输入“we...

  • 面试题5: 替换空格

    思路:对于C++要从后向前替换,java好像 从前向后从后向前都一样 相关题目:合并两个有序数组,已知A1有足够大...

  • 面试题5:【替换空格】

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

  • 面试题5:替换空格

    请实现一个函数,把字符串中的每个空格替换成"%20"。 解析:从后往前替换。首先计算出需要的容量,然后从最后一位开...

  • 面试题5:替换空格

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

  • 面试题5:替换空格

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

  • 面试题5:替换空格

    题目一 实现一个函数,把字符串中的每个空格替换成"%20".解法一:朴素思想,从前到后扫描,遇到空格首先把后面的内...

  • 面试题5:替换空格

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

  • 面试题5:替换空格

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

  • 面试题5:替换空格

    题意:请实现一个函数,把字符串中的每个空格替换成"%20"。 算法:双指针扫描 思路:1)遍历原数组,并根据空格个...

网友评论

    本文标题:面试题5:替换空格

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