题目描述 在线编程
将一个字符串中的空格替换成 "%20"。
Input: "A B" Output: "A%20B"
解题思路
要求在原字符串上改动,要将空格替换成 "%20",即每有1个空格字符串长度增加2;
1.先给原字符串扩展长度,每有1个空格长度增加2个单位
2.用双指针法,指针p2指向扩展后字符串尾,指针p1指向原字符串的尾,从后往前遍历
若p1==空格时,p2依次往前填充"02%";若p1!=空格,p2填充p1指向的字符;双指针继续往前遍历.
public class Solution { public String replaceSpace(StringBuffer str) { int p1=str.length()-1; for(int i=0;i<=p1;i++){ if(str.charAt(i)==' ') str.append(" "); } int p2=str.length()-1; while(p1>=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(); } }