【LeetCode】面試題 01.03. URL化(Java)

angenin十一發表於2020-10-01

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

解法一

使用字元陣列,也是題目要求的做法。

class Solution {
    public String replaceSpaces(String S, int length) {
        char[] ch = new char[length * 3];
        int index = 0;
        for (int i = 0; i < length; i++) {
            char c = S.charAt(i);
            if (c == ' ') {
                ch[index++] = '%';
                ch[index++] = '2';
                ch[index++] = '0';
            } else {
                ch[index] = c;
                index++;
            }
        }
        return new String(ch, 0, index);
    }
}

在這裡插入圖片描述

解法二

用String的API

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

在這裡插入圖片描述
效率太差,不推薦,不過做的時候第一反應就是用這個。

解法三

使用StringBuilder

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

在這裡插入圖片描述
這個是優化第二種解法的,不過也不是題目要求的,瞭解即可。

相關文章