题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
思路
1.我们可以发现空格和要被替换的字符串长度相差2,所以我们可以对原数据进行一次扫描,若发现空格就将给字符串新增两个空格填充,为下一步替换做准备。
2.然后我们从原字符串的末尾开始扫描,若不是空格直接落到新字符串的尾部,若是空格,则直接将%20以倒叙的形式覆盖。
Java代码实现
public class Solution { public String replaceSpace(StringBuffer str) { //保存原有字符串的长度 int p1 = str.length()-1; //找到一个空格就给str新增两个空格 for(int i=0;i<=p1;i++){ if(str.charAt(i) == ' '){ str.append(" "); } } //记录字符串替换后的总长度 int p2 = str.length()-1; while(p1 >= 0 && p2 >= 0){ 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(); } }