1. 程式人生 > >劍指offer____替換空格

劍指offer____替換空格

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

class Solution {
public:
       void replaceSpace(char *str,int length) 
       {
            if (str == NULL||length <= 0)  return;
            int num = 0;
            int originallength = 0;//原來字串長度
            int i = 0;
            while(*(str+i)!='\0')
            {
                originallength++;
            
                 if(*(str+i) == ' ') num++;
                  i++;
            } 
            int newlength = originallength + 2*num;      //替換空格後字串的長度
            if(newlength > length)   return;
            int m = newlength;            //一定要注意不要定義m=newlength-1,因為'\0'也算
            for(int j = originallength;j>=0;j--) //同樣不能定義 j=originallength-1
            {
                if(*(str+j) == ' ')
                {
                    *(str+(m--)) = '0';
                    *(str+(m--)) = '2';
                    *(str+(m--)) = '%';
                }
                else
                     *(str+(m--)) = *(str+j);
                    
            }
        }
};