请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
题目初看十分简单,就是简单的遍历然后判断是否为空格再删除空格进行插入。
这里有一个问题时完成一次插入之后后面空格的序号都会发生偏移。
这里我用offset记录偏移量。
记录下所有的空格位置,再用一个循环单独进行修改。
代码如下:
public class Solution {
public String replaceSpace(StringBuffer str) {
int[] space = new int[str.length()];
int total=0;
for (int i = 0;i < str.length();i++){
if (str.charAt(i) == ' ') space[total++]=i;
}
int offset=0;
for (int i=0;i<total;i++){
str=str.deleteCharAt(space[i]+offset);
str=str.insert(space[i]+offset,"%20");
offset+=2;
}
return str.toString();
}
}