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 };