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();
        }
    }

  • 相关阅读:
    [ZJOI2010] 数字计数
    [USACO] 2004 Open MooFest 奶牛集会
    数星星
    [SCOI2011] 糖果
    西瓜种植
    [NOI2018] 归程
    [APIO2012] 派遣
    小K的农场
    妮可妮可妮 [Hash]
    [ZJOI2012] 灾难
  • 原文地址:https://www.cnblogs.com/luo-c/p/13648146.html
Copyright © 2011-2022 走看看