请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
示例 1:
输入:s = “We are happy.”
输出:“We%20are%20happy.”
限制:
0 <= s 的长度 <= 10000
暴力
class Solution {
public String replaceSpace(String s) {
StringBuilder sb = new StringBuilder();
for(Character c : s.toCharArray()){
if(c == ' ')
sb.append("%20");
else
sb.append(c);
}
return sb.toString();
}
}
双指针
暴力方法也可以做,暴力方法的时间复杂度有O(n^2)
- 假设结果字符串的长度为s的长度,预处理找出空格,有空格的话长度+2。
- 设i为s的下标,p为str的下标
- 若s[i]为空,str从后往前赋予"%20"
- 若s[i]不空,str[p --] = s[i]
class Solution {
public String replaceSpace(String s) {
int len = s.length();
for(int i = 0; i < s.length(); i ++){
char c = s.charAt(i);
if(c == ' ')
len += 2;
}
int p = len - 1;
char []str = new char[len];
for(int i = s.length() - 1; i >= 0; i -- ){
char a = s.charAt(i);
if(a == ' '){
str[p --] = '0';
str[p --] = '2';
str[p --] = '%';
}else{
str[p --] = a;
}
}
return new String(str, 0, len);
}
}