剑指offer刷题(2)

题目描述

请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
思路
如果从前往后进行遍历,那么每次找到一个空格,则需要添加两个字节来进行替换,我们采用先对字符串进行遍历,查找字符串中的空格的个数,然后对新的字符串进行长度的计算,然后从后往前进行替换,每遇到一个空字符,然后进行替换。
class Solution 
{
public:
	void replaceSpace(char *str,int length) 
	{
		if(str==NULL||length<0)
		{
			return ;
		}
		int oldnumber=0;
		int numbers=0;
		int newnumber=0;
		int i=0;
		int j=0;
		int oldlength;
		int newlength;
		while(str[i]!='\0')
		{
			oldnumber++;
			if(str[i]==' ')
			{
				numbers++;

			}
			i++;
			
		}
		newnumber=oldnumber+numbers*2;
		if(newnumber>length)
			return ;
		oldlength=oldnumber;
		newlength=newnumber;
		while(oldlength>=0&&oldlength<newlength)
		{
			if(str[oldlength]==' ')
                {
                     str[newlength--]='0';
                     str[newlength--]='2';
                     str[newlength--]='%';

                     
                     
                }
               else //不是空格就把pOldlength指向的字符装入pNewlength指向的位置
               {
                    str[newlength--]=str[oldlength];
                   
               }
             oldlength--;
             

		}


	}
};


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值