替换空格

class Solution {
public:
void replaceSpace(char *str, int length) {
	if (str == NULL || length < 0)
		return;
	int i = 0; int j = 0;
	int num = 0;
	int oldlength=0;
	//先遍历一遍计算出空格的数量num,向后移动2*num
	while (str[i] != '') {
		oldlength++;
		if (str[i] == ' ') {
			num ++;
		}
		i++;
	}
	//从后向前找空格
	int newlength = oldlength + num*2;
	if (newlength > length) return;
	int p_old = oldlength;//注意不用减一,也要算在里面
	int p_new = newlength;
	while (p_old>=0&&p_old<p_new) {
		if (str[p_old] == ' ') {
			str[p_new--] = '0';
			str[p_new--] = '2';
			str[p_new--] = '%';
		}
		else {
			str[p_new] = str[p_old];
			p_new--;
		}
		p_old--;//记得无论是否是空格p_old都要向前移动
	}
}
};

  

原文地址:https://www.cnblogs.com/curo0119/p/9035583.html