题目描述:
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
示例 1:
输入:s = “We are happy.”
输出:“We%20are%20happy.”
限制:
0 <= s 的长度 <= 10000
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/ti-huan-kong-ge-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路:
这题最直接的方法就是遍历法,但是存在一个问题:将原先的空格替换成%20,就由1个字符变成了3个字符,这样字符串后面的字符全都要往后移了,这样就增加了复杂度。可以采取一个思路:先将字符串从最后开始,一个一个字符压就栈里,然后一个一个推出到一个StringBuilder里面,遇到空格的时候,就在StringBuilder后面添加%20。
代码(Java):
public class doingmyself {
public static void main(String[] args) {
String s = "We are happy.";
System.out.println(replaceSpace(s));
}
public static String replaceSpace(String s) {
Stack<Character> stack = new Stack<Character>();
int len = s.length();
StringBuilder sb = new StringBuilder();
while((len-1)>=0) {
stack.push(s.charAt(len-1));
len--;
}
while(!stack.empty()) {
if(stack.peek()!=' ') {
sb.append(stack.pop());
}else {
stack.pop();
sb.append("%20");
}
}
return sb.toString();
}
}