leetcode 面試題 01.03. URL化

【題目】面試題 01.03. URL化

URL化。編寫一種方法,將字符串中的空格全部替換爲%20。假定該字符串尾部有足夠的空間存放新增字符,並且知道字符串的“真實”長度。(注:用Java實現的話,請使用字符數組實現,以便直接在數組上操作。)

示例1:

 輸入:"Mr John Smith    ", 13
 輸出:"Mr%20John%20Smith"

示例2:

 輸入:"               ", 5
 輸出:"%20%20%20%20%20"

提示:
字符串長度在[0, 500000]範圍內。

【解題思路1】StringBuilder

class Solution {
    public String replaceSpaces(String S, int length) {
        StringBuilder sb = new StringBuilder();
        for(int i = 0; i < length; i++){
            if(S.charAt(i) == ' '){
                sb.append("%20");
            }else{
                sb.append(S.charAt(i));
            }
        }
        return sb.toString();
    }
}

【解題思路2】replaceAll()

class Solution {
    public String replaceSpaces(String S, int length) {
        return S.substring(0, length).replaceAll(" ", "%20");
    }
}

【解題思路3】字符數組,倒着替換

題目字符串後面有空餘,倒着塞%20就行了,不過測試用例後面會多出來空格,返回數組要切片

class Solution {
    public String replaceSpaces(String S, int length) {
        char[] s = S.toCharArray();
        int j =  S.length() - 1; 
        for (int i=length-1; i>=0; i--) {
            if (s[i] == ' ') {
                s[j--] = '0';
                s[j--] = '2';
                s[j--] = '%';
            } else {
                s[j--] = s[i];
            }
        }
        return String.valueOf(s, j+1, S.length()-j-1);
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章