第一种:String 的 replaceAll(String regex, String replacement) 方法

如果对 String 熟悉的话,可以直接使用 String 的实例方法.

  • String replaceAll​(String regex, String replacement)
    Replaces each substring of this string that matches the given regular expression with the given replacement.
    使用给定的替换物替代字符串中满足给定正则表达式的每个子串.
import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param s string字符串 
     * @return string字符串
     */
    public String replaceSpace (String s) {
        // write code here
        if(s == null || s.length() == 0)
            return s;
        return s.replaceAll(" ", "%20");
    }
}

第二种:遍历 String 对象,逐个替换空格,使用 StringBuilder 对象暂存替换后的字符串

步骤:

  1. 遍历 s;
  2. 如果当前字符是 ' ', 则将 "%20" 添加到 StringBuilder 对象中; 否则, 将当前字符添加到 StringBuilder 字符中;
  3. 返回 StringBuilder 对象的 String 表示, 即调用 .toString() 方法.
import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param s string字符串 
     * @return string字符串
     */
    public String replaceSpace (String s) {
        // write code here
        if(s == null || s.length() == 0)
            return s;
        StringBuilder sb = new StringBuilder();
        char ch;
        for(int i = 0; i < s.length(); ++i)
        {
            ch = s.charAt(i);
            if(ch == ' ')
                sb.append("%20");
            else
                sb.append(ch);
        }
        return sb.toString();
    }
}

疑问:

运行时间上,第一种方法比第二种方法更长,这是为何呢?
望大家帮我解惑,不胜感激!