劍指Offer:替換空格(5)
阿新 • • 發佈:2020-08-10
題目描述:
將一個字串中的每個空格替換成“%20”。例如,當字串為We Are Happy.則經過替換之後的字串為We%20Are%20Happy.
解題思路:
在字串後任意填充字元,使得字串替換前的長度=替換後的長度,例如上面這個例子,替換前長度為12,替換後的長度為16,所以在原來字串的基礎上填充2位.
p1指向填充前的末尾,p2指向填充後的末尾:
然後p1,p2一起前移,如果p1不是空格,則p2=p1;如果p1是空格,則p2依次輸入"02%"
1 public class Solution { 2 public String replaceSpace(StringBuffer str) {3 int p1 = str.length()-1; 4 for(int i=0;i<=p1;i++){ 5 if(str.charAt(i)==' ') 6 str.append(" "); 7 } 8 int p2 = str.length()-1; 9 while(p1>=0 && p2>p1){ 10 char c = str.charAt(p1--); 11 if(c==' '){ 12 str.setCharAt(p2--,'0'); 13 str.setCharAt(p2--,'2'); 14 str.setCharAt(p2--,'%'); 15 }else{ 16 str.setCharAt(p2--,c); 17 } 18 } 19 return str.toString(); 20 } 21 }