题目

图片说明

思路

图片说明
C++这里直接将数组长度标记乘2+原长度既可,不用再另外申请内存空间

Code

class Solution {
public:
    void replaceSpace(char *str,int length) {
        //判空操作
        if(str == nullptr || length < 0)
            return;
        int P1 = length - 1;
        int cnt = 0;
        for(int i = 0; i < length; i++)
        {
            if(str[i] == ' ')
            {
                cnt++;
            }
        }
        int P2 = length + cnt * 2 - 1;
        while(P1 < P2 && P1 >= 0)
        {
            if(str[P1] == ' ')
            {
                P1--;
                str[P2--] = '0';
                str[P2--] = '2';
                str[P2--] = '%';                
            }
            else if(str[P1] != ' ')
            {                
                str[P2--] = str[P1];
                P1--;    //注意位置
            }            
        }        
    }
};