LeetCode刷题23-字符串-05. 替换空格
题目
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
示例1:
输入:s = “We are happy.”
输出:“We%20are%20happy.”
提示:
- 0 <= s 的长度 <= 10000
代码
StringBuilder
class Solution {
public String replaceSpace(String s) {
if(s == null) {
return null;
}
StringBuilder sb = new StringBuilder();
for(int i = 0; i < s.length(); i++) {
if(s.charAt(i) == ' ') {
sb.append("%20");
} else {
sb.append(s.charAt(i));
}
}
return sb.toString();
}
}
双指针法
class Solution {
public String replaceSpace(String s) {
if(s == null || s.length() == 0) {
return s;
}
StringBuilder sb = new StringBuilder();
for(int i = 0; i < s.length(); i++) {
if(s.charAt(i) == ' ') {
sb.append(" ");
}
}
if(sb.length() == 0) {
return s;
}
// 指向最后一个字符元素
int left = s.length() - 1;
s += sb.toString();
// 指向扩容后最后一个字符元素
int right = s.length() - 1;
char[] result = s.toCharArray();
while(left >= 0) {
if(result[left] == ' ') {
result[right--] = '0';
result[right--] = '2';
result[right] = '%';
} else {
result[right] = result[left];
}
left--;
right--;
}
return new String(result);
}
}