1 class Solution { 2 public String replaceSpace(StringBuffer str) { 3 4 String string=str.toString(); 5 6 if(string!=null){ 7 string=string.replaceAll(" ", "%20"); 8 } 9 return string; 10 11 } 12 }
深刻探究(replace方法的實現):app
之後補充函數
優秀解法:spa
1 連接:<a href="https://www.nowcoder.com/questionTerminal/4060ac7e3e404ad1a894ef3e17650423">https://www.nowcoder.com/questionTerminal/4060ac7e3e404ad1a894ef3e17650423</a> 2 來源:牛客網 3 4 //思路 5 //1:從前日後插入,這樣移動·的次數多不建議 6 //2:從後往前插入 7 8 9 10 class Solution { 11 public: 12 13 void replaceSpace(char *str,int length) { 14 //遍歷一邊字符串找出空格的數量 15 if(str==NULL||length<0) 16 return ; 17 int i=0; 18 int oldnumber=0;//記錄之前的長度 19 int replacenumber=0;//記錄空格的數量 20 while(str[i]!='\0') 21 { 22 oldnumber++; 23 if(str[i]==' ') 24 { 25 replacenumber++; 26 } 27 i++; 28 } 29 int newlength=oldnumber+replacenumber*2;//插入後的長度 30 if(newlength>length)//若是計算後的長度大於總長度就沒法插入 31 return ; 32 int pOldlength=oldnumber; //注意不要減一由於隱藏個‘\0’也要算裏 33 int pNewlength=newlength; 34 35 while(pOldlength>=0&&pNewlength>pOldlength)//放字符 36 { 37 if(str[pOldlength]==' ') //碰到空格就替換 38 { 39 str[pNewlength--]='0'; 40 str[pNewlength--]='2'; 41 str[pNewlength--]='%'; 42 43 } 44 else //不是空格就把pOldlength指向的字符裝入pNewlength指向的位置 45 { 46 str[pNewlength--]=str[pOldlength]; 47 48 } 49 pOldlength--; //無論是if仍是elsr都要把pOldlength前移 50 51 } 52 53 54 55 56 57 } 58 };