本文最后更新于:2020年6月27日 晚上

题目描述:

请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。在此字符串上完成替换,空间保证足够。

实现如下:

//"We Are Happy"
//" helloworld"
//""
//"  "

class Solution 
{
public:
	void replaceSpace(char *str, int length) 
	{
		//判断异常情况
		if (str == NULL || *str == NULL || length < 0) return;
		
		int i = 0;
		int num = 0;
		while (i < length)//遍历统计' '个数
		{
			if (str[i] == ' ') ++num;
			++i;
		}

		i = length - 1;//将i移动到str最后一个字符位置
		length = length + num * 2 - 1;//将length移动到替换后最后一个字符位置
		while (i >= 0)
		{
			if (str[i] != ' ')//非' '时正常移动
			{
				str[length] = str[i];
				--length;
			}
			else
			{
				length -= 3;//否则将length先前移动三个字节完成替换
				str[length + 1] = '%';
				str[length + 2] = '2';
				str[length + 3] = '0';
			}
			--i;
		}
	}
};