【剑指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)