牛客网刷题 (替换空格)

替换空格__牛客网

目录

题目描述

题目分析

 代码实现


非常经典的一道题目!!!!!

题目描述

 

这是一道接口型的题目,你只需要完成这个接口就可以

str指向的就是要处理的字符串

length是要处理的字符串的长度

题目分析

 首先要把一个空格字符变成 3 个字符 就是说遇到一个空格整个字符串就要向后移动2位,所以先要计算字符串中有多少个空格,然后向后移 * 2个字符,最后使用双指针 一个指向非空字符 另一个指向空字符

end1 向前走, 把字符往后挪,end2也往前走,直到end1遇到空格

end2 ++ 指向的内容要依次改为 0 2 % ,在此期间end1不变

然后end1--,把字符往后挪,end2也往前走,直到end1再次遇到空格

什么时候停止呢?

在最后两个指针相等的时候,就表示结束了

 代码实现

void replaceSpace(char* str, int length) {
	//数空格
	int count = 0;
	char* p = str;
	while (*p)
	{
		if (*p == ' ')
		{
			count++;
		}
		p++;
	}

	int len = length + 2 * count;//新字符串的长度
	int end1 = length - 1;
	int end2 = len - 1;

	while (end1 != end2)//结束标记
	{
		if (str[end1] != ' ')
		{
			str[end2--] = str[end1--];
		}
		else
		{
			str[end2--] = '0';
			str[end2--] = '2';
			str[end2--] = '%';
			end1--;
		}

	}
}

猜你喜欢

转载自blog.csdn.net/qq_54880517/article/details/124130895