请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
思路:
题目提供的Stringbuffer :需要需要先遍历一次用一个整型数组记录所有空格字符的位置,然后逆序替换空格字符为%20即可
如果题目提供char[]:同样先遍历数组寻找空格字符的位置,然后做逆序替换。也可以便利一次char[] 用一个int 变量记录空格字符的数目,然后后逆序替换的时候,先用一个变量i记录最后一个字符的位置,再用变量j记录最后一个字符将要移动到的位置,即char数组长度+替换字符后组要增加的长度,然后通过从后往前依次移动替换空格即可。
public class Solution {
public static String replaceSpace(StringBuffer str) {
if (str.equals(null)) {
return null;
}
char[] s = str.toString().toCharArray();
int[] record = new int[str.length() + 1];
int j = 0;
for(int i = 0;i < s.length;i++)
if (s[i] == ' ') {
j++;
record[j] = i;
}
for(;j > 0;j--) {
str.replace(record[j],record[j]+1,"%20");
}
return str.toString();
}
}