题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
解体思路
1.先遍历字符串,找到存在的空格,在字符串尾部填充空格,使其长度等于填充之后的长度 2.定义两个指针,分别指向新串和旧串末尾 3.从后向前遍历,依次重新setCharAt,这样不会改变p1指向的旧串的内容
复杂度:O(n) + O(1)
public class Solution {
public String replaceSpace(StringBuffer str) {
int old_len = str.length();
for(int i=0; i<old_len; i++) {
if(str.charAt(i) == ' ') {
str.append(" ");
}
}
int p1 = old_len - 1;
int p2 = str.length() - 1;
while(p2 >= 0 && p2 > p1) {
char c = str.charAt(p1--);
if(c == ' ') {
str.setCharAt(p2--, '0');
str.setCharAt(p2--, '2');
str.setCharAt(p2--, '%');
} else {
str.setCharAt(p2--, c);
}
}
return str.toString();
}
}