【剑指offer】字符串的空格替换

如何将字符串we are happy中的空格替换成we%20are%20happy这样的字符串,其主要思想是遍历一次字符串,确定空格字符的个数,然后通过空格字符的个数确定目的字符串的长度,1个空格被替换成3个字符,故,空格的个数*2+源字符串的长度+1就是新字符串的长度,之后就是拷贝与替换操作了。用两个指针分别指向新字符串和原字符串的起始位置,若没有空格则执行类似strcpy的操作,若有空格则让新字符串的指针走三次,分别填入“%20”三个字符,然后两个指针一起走,实现代码如下:

#include<iostream>
using namespace std;
int main()
{
	char *a = "We are happy";
	int count = 0;
	char* cur = a;
	while (*cur)//遍历确定空格的个数
	{
		if (*cur == ' ')
			count++;
		++cur;
	}
	char *str = (char*)malloc(count * 2 + strlen(a) + 1);//开辟新的空间
	cur = str;
	while (*a)//填入操作
	{
		if (*a == ' ')
		{
			*cur++ = '%';
			*cur++ = '2';
			*cur++ = '0';
			a++;
		}
		else
		{
			*cur++ = *a++;
		}
	}
	*cur = 0;
	printf("%s", str);
	system("pause");
	return 0;
}



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值