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