【题目】请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
【思路】一开始有人惯性思维,从前向后进行替换,也不可不行,但会发现如果有两个空格,那么“Happy”会被移动两次,这就会使效率变差,能不能移动一次就行呢?打破惯性思维,从后向前移动就好了!确定长度后直接将“Happy”移到最后,只需要一次!
class Solution { public: void replaceSpace(char *str,int length) { int count = 0; for(int i =0;i < length; i++){ if(str[i] == ' ') count++; } for(int i = length; 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--; } } } };