【題目】面試題 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);
}
}