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

