题目描述:
请实现一个函数,将一个字符串s中的每个空格替换成“%20”。
例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
数据范围:0<=len(s)<=1000。保证字符串中的字符为大写英文字母、小写英文字母和空格中的一种。
进阶:时间复杂度O(n) ,空间复杂度 O(n)
示例1
输入:"We Are Happy"
返回值:"We%20Are%20Happy"
示例2
输入:" "
返回值:"%20"
解法一:StringBuffer/StringBuilder
思路:
遍历数组:
- 如果当前位置的值是空格,则替换为%20
- 如果当前位置的值不是空格,则直接append(s.charAt(i))
代码:
import java.util.*;
public class Solution {
public String replaceSpace (String s) {
StringBuffer sb = new StringBuffer();
for(int i=0; i < s.length(); i++){
char c = s.charAt(i);
if(s.charAt(i) == ' '){
sb.append("%20");
}else{
sb.append(c);
}
}
return sb.toString();
}
}
解法二:队列
思路:
思路基本和解法一一致。
代码:
import java.util.*;
public class Solution {
public String replaceSpace (String s) {
Queue<String> queue = new LinkedList<>();
//遍历字符串,入栈
for(int i=0; i < s.length(); i++){
char c = s.charAt(i);
if(s.charAt(i) == ' '){
queue.offer("%20");
}else{
queue.offer(c+"");
}
}
//出队拼接字符串
StringBuffer sb = new StringBuffer();
while(queue.size() > 0){
sb.append(queue.poll());
}
return sb.toString();
}
}