【每天一題】劍指 Offer 05. 替換空格

請實現一個函數,把字符串 s 中的每個空格替換成"%20"。

示例 1:

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

題解:

class Solution {
    public String replaceSpace(String s) {
        int length = s.length();
        //由於每次替換從 1 個字符變成 3 個字符,使用字符數組可方便地進行替換。建立字符數組地長度爲 s 的長度的 3 倍,這樣可保證字符數組可以容納所有替換後的字符。
        char[] array = new char[length * 3];
      	// 初始化 size 爲 0,size 表示替換後的字符串的長度
        int size = 0;
        //從左到右遍歷字符串 s
        for (int i = 0; i < length; i++) {
        	//獲得 s 的當前字符 c
            char c = s.charAt(i);
            //如果字符 c 是空格,則令 array[size] = '%',array[size + 1] = '2',array[size + 2] = '0',並將 size 的值加 3
            if (c == ' ') {
                array[size++] = '%';
                array[size++] = '2';
                array[size++] = '0';
            } else {
            //如果字符 c 不是空格,則令 array[size] = c,並將 size 的值加 1
                array[size++] = c;
            }
        }
        //遍歷結束之後,size 的值等於替換後的字符串的長度,從 array 的前 size 個字符創建新字符串,並返回新字符串
        String newStr = new String(array, 0, size);
        return newStr;
    }
}

時間複雜度:O(n)。遍歷字符串 s 一遍。
空間複雜度:O(n)。額外創建字符數組,長度爲 s 的長度的 3 倍。

在這裏插入圖片描述

class Solution {
    public String replaceSpace(String s) {
        return s.replace(" ","%20");
    }
}

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章