【剑指offer】5. 替换空格 - 双指针法 - c++

替换空格

http://www.nowcoder.com/questionTerminal/4060ac7e3e404ad1a894ef3e17650423

从前向后记录空格数目,从后向前替换空格

class Solution {
public:
    void replaceSpace(char *str,int length) {
        // edge case
        if(str == nullptr || length == 0)
            return;

        // 统计空格数量
        int count = 0;
        for(int i=0; i<length; i++){
            if(str[i] == ' ')
                count++;
        }
        // 倒序写入字符
        for(int i=length-1; i>=0; i--){
            if(str[i] != ' '){
                str[i+2*count] = str[i];
            }
            else{
                str[i+2*count] = '0';
                str[i+2*count-1] = '2';
                str[i+2*count-2] = '%';
                count--;  // 注意修改缩进
            }
        }
    }
};

时空复杂度:
O(n); O(1)

全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务