#LeetCode
面试题 01.03. URL化 - 力扣(LeetCode)
题目描述
解法
初次解法
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();
}
}
优化解法
-
无需额外空间
-
上面解法没有考虑边界条件
-
双指针法
class Solution {
public String replaceSpaces(String S, int length) {
int stringlen = S.length();
if(length == 0 || stringlen == 0){
return S;
}
int last = stringlen - 1;
int pre = length - 1;
char[] strArr = S.toCharArray();
while(pre >= 0){
if(' ' == strArr[pre]){
strArr[last] = '0';
strArr[last-1] = '2';
strArr[last-2] = '%';
last -= 3;
pre --;
}else{
strArr[last] = strArr[pre];
last --;
pre --;
}
}
return new String(strArr, last+1, stringlen - last-1);
}
}