1. 程式人生 > >2,替換空格 《劍指offer》

2,替換空格 《劍指offer》

例如 ron repl ces 長度 個數 char new lac

題目:

請實現一個函數,將一個字符串中的空格替換成“%20”。例如,當字符串為We Are Happy.則經過替換之後的字符串為We%20Are%20Happy。

思路:

遍歷兩遍的字符串數組;第一遍記錄空格的個數num,由num和字符串長度可以計算出新的字符串的長度newLength;第二遍替換,從字符串的最末尾開始遍歷:

  1,如果不是空格,賦值到新字符串的對應位置,;

  2,如果是空格,賦值對應的%20到新字符串的對應位置;

代碼:

//c++
void replaceSpace(char *str,int length) {
         int newLength=0;
         int i=0; 
         int num=0;
         while(str[i]!=‘\0‘){
             if(str[i]==‘ ‘){
                 num++;
             }  
             i++;
         }
         newLength=i+num*2;
         if(newLength>length) return;
         while(i!=-1){
            if(str[i]==‘ ‘){
                str[newLength--]=‘0‘;
                str[newLength--]=‘2‘;
                str[newLength]=‘%‘;
            }else{
                str[newLength]=str[i];
            }
             i--;
             newLength--;
         }
	}

  

2,替換空格 《劍指offer》