又通过一道题目,替换字符串 —— 剑指Offer

 

 

https://www.nowcoder.net/practice/4060ac7e3e404ad1a894ef3e17650423?tpId=13&tqId=11155&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

 

class Solution {
public:
    void replaceSpace(char *str,int length) {
        if (str == NULL) return;
        int bcnt = 0;
        for (int i = 0; i<length; ++i) {
            if (str[i] == ' ') bcnt++;
        }
        
        int nlen = length + 2 * bcnt;
        for (int i=length-1, j=nlen-1; i >= 0 && j >= 0; i--, j--) {
            if (str[i] != ' ') str[j] = str[i];
            else {
                str[j] = '0';
                str[--j] = '2';
                str[--j] = '%';
            }
        }
    }
};

 

解题关键:

字符串的长度会变化。要注意。
另外,就是从后往前来拷贝字符。

 

posted @ 2018-02-06 23:42  blcblc  阅读(165)  评论(0编辑  收藏  举报