劍指offer-替換空格

題目描述

請實現一個函數,將一個字符串中的空格替換成「%20」。例如,當字符串爲We Are Happy.則通過替換以後的字符串爲We%20Are%20Happy。
時間限制:1秒 空間限制:32768K 熱度指數:27315
 
個人思路:將StringBuffer類型轉換爲String,而後使用replace方法(膚淺了,沒有理解到題目要考察的知識點)
 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   };
相關文章
相關標籤/搜索