zoukankan      html  css  js  c++  java
  • 剑指Offer 05.替换空格

    请实现一个函数,把字符串 s 中的每个空格替换成"%20"。

    示例 1:

    输入:s = "We are happy."
    输出:"We%20are%20happy."

    思路:因为String 的不可性,每一次在 res 后面添加字符,都要重新开辟空间、复制之前的值,再在末尾添加,所以效率很低,如下:

    class Solution {
        public String replaceSpace(String s) {
            String res = "";
            char c;
            for(int i = 0; i < s.length(); i++){
                c = s.charAt(i);
                if(c != ' ') res += c;
                else res += "%20";
            }
            return res;
        }
    }

     改进:利用 StringBuffer / StringBuilder 的特性,底层会申请一个默认 16 字节的空间,当空间不够的时候,再申请 2 倍 + 2 的空间,不用添加的时候,每一次都去申请空间,所以,效率就高很多。

    class Solution {
        public String replaceSpace(String s) {
            StringBuffer res = new StringBuffer();
            for(int i = 0; i < s.length(); i++){
                if(s.charAt(i) != ' ') res.append(s.charAt(i));
                else res.append("%20");
            }
            return res.toString();
        }
    }

  • 相关阅读:
    Tomcat 调优的技巧
    双亲委派模型
    字典树实现
    Python获取房价信息和导出EXCEL
    日志检索关键字并截取上下行关联内容
    GC日志分析
    Linux 查看 删除进程
    Rotate partitions in DB2 on z
    C++ STL string
    DB2 for z: system catalog tables
  • 原文地址:https://www.cnblogs.com/luo-c/p/13648146.html
Copyright © 2011-2022 走看看