zoukankan      html  css  js  c++  java
  • [剑指OFFER] 替换空格

    题目描述

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

    分析:

    个人理解,应该是对空间复杂度有要求,如果没有要求,下面code就OK

    class Solution {
        public:
            string replaceSpace(string str) {
                string rtn;
                for(int i = 0; i < str.size(); i++)
                {   
                    if(str[i] == ' ')
                        rtn += "%20";
                    else
                        rtn += str[i];
                }   
                return rtn;
            }   
    };

    进一步可以省些空间,参考 http://www.cnblogs.com/CnZyy/p/3304495.html

    例如把we are happy这个字符串中所有空格替换成"%20",最直接的做法是从头开始扫苗,遇到空格就替换,并且把空格后面的字符都顺序后移。复杂度O(n^2)。

    重要思想(这个从后往前的思想特别重要,举一反三的例子也是):先扫描一遍字符串统计出空格数量blanknum,由于每个空格被替换成3个字符"%20",即每替换一个空格总长度增加2,因此最后总的长度应该是原长+blanknum*2。然后对字符串从后往前扫描,不是空格的直接移动到新位置,如果是空格替换成%20。

    举一反三:

    有两个已排序数组A,B,A的末尾有足够的空间放A和B。现要求将B所有元素插入A中并仍是有序的,要求O(n)。

    类似的:用两个index标记从后往前把大的移动到后面。

  • 相关阅读:
    HTML 标签
    HTML与CSS的关系
    用node搭建本地服务环境
    Windows平台下SVN安装配置及使用
    CSS Flex布局整理
    zepto 选中select option 的值
    Zepto tap 穿透bug、解决移动端点击穿透问题
    jquery 上下滚动显示隐藏
    es6学习笔记二:生成器 Generators
    es6学习笔记一:迭代器和for-of循环
  • 原文地址:https://www.cnblogs.com/diegodu/p/4569826.html
Copyright © 2011-2022 走看看