zoukankan      html  css  js  c++  java
  • 剑指Offer(二):替换空格


     说明:

      1.本系列是根据《剑指Offer》这个系列做的一个小笔记。

      2.直接动力是因为师兄师姐找工作很难,而且机械出生的我面试算法更难。

      3.刚开始准备刷LeetCode、LintCode,突然看见一个大神研究生正在刷这个系列,故跟着大神学习。

      4.在别人基础之上进行部分优化,总结自己的观点。


    问题:

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

    思路:

      现在有这样一个问题 ,num="12 34 56",当你去除第一个空格的时候,那么num="12%2034 56",这个时候%20是不用循环的,如果不跳过新加入的元素,那么复杂度就会提高。当然你也可以再创建一个num1去存储,貌似复杂度更高了。

      本文使用跳过的方式,每次加入之后都会跳过新加入的数据,直接在原来的数据上更改即可。

     1 #include <iostream>
     2 #include <string>
     3 using namespace std;
     4 string replace(string& num,const string& p,const string& aim);
     5 int main(int argc,char** argv[])
     6 {
     7     string num     = "AB CD EF 12";
     8     cout <<replace(num," ","wujinyi");;
     9     while(1);
    10     return 0;
    11 }
    12 
    13 //@replace
    14 //@num     string
    15 //@p    const single string
    16 //@aim  const arbitrary string lower than num
    17 string replace(string& num,const string& p,const string& aim)
    18 {
    19     for (size_t i=0; i<=num.length();i++)
    20     {
    21         if (num[i]==p[0])
    22         {
    23             num.insert(i,aim);
    24             num.erase(i+aim.length(),1);
    25             i+=(aim.length()-1);
    26         }
    27     }
    28     return num;
    29 }

  • 相关阅读:
    正则表达式的贪婪匹配(.*)和非贪婪匹配(.*?)
    jQuery + css 公告从左往右滚动
    C# process 使用方法
    存储过程与SQL的结合使用
    img标签的方方面面
    kibana 5.0.0-alpha5 安装
    es5.0 v5.0.0-alpha 编译安装
    奇怪的hosts文件
    阿里云 api 的文档拼写错误
    centos 7 systemd docker http proxy
  • 原文地址:https://www.cnblogs.com/wjy-lulu/p/8076011.html
Copyright © 2011-2022 走看看