1. 程式人生 > 其它 >Mac 下 MAMP Pro 開啟 PHP Redis 擴充套件

Mac 下 MAMP Pro 開啟 PHP Redis 擴充套件

在部分程式語言中,我們可以動態地將原陣列長度擴大,此時我們就可以使用雙指標演算法,來降低空間的使用:

  1. 首先遍歷一遍原陣列,求出最終答案的長度length;
  2. 將原陣列resize成length大小;
  3. 使用兩個指標,指標i指向原字串的末尾,指標j指向length的位置;
  4. 兩個指標分別從後往前遍歷,如果str[i] == ' ',則指標j的位置上依次填充'0', '2', '%',這樣倒著看就是"%20";如果str[i] != ' ',則指標j的位置上填充該字元即可。

由於i之前的字串,在變換之後,長度一定不小於原字串,所以遍歷過程中一定有i <= j,這樣可以保證str[j]不會覆蓋還未遍歷過的str[i],從而答案是正確的。

class Solution {
public:
    string replaceSpace(string s) {
        int len = 0;
        for(char &c : s)
            if(c == ' ') len += 3;
            else len++;
        
        int i = s.size(), j = len;
        s.resize(len);

        while(i >= 0)
        {
            if(s[i] == ' ')
            {
                s[j--] = '0';
                s[j--] = '2';
                s[j--] = '%';
            }
            else
                s[j--] = s[i];
            i--;
        }
        return s;
    }
};