现在的位置: 首页 > 综合 > 正文

第四十一题 字符串中替换空格

2018年04月13日 ⁄ 综合 ⁄ 共 768字 ⁄ 字号 评论关闭

题目:将字符串中的空格替换为%20,如We are Happy.,替换为We%20are%20 Happy.,复杂度为O(n).

//为字符串空格处换成20%
#include <iostream>
using namespace std;
void ReplaceBlank(char *str,const int length)
{
	if (str==nullptr&&length<=0)
	{
		return;
	}
	int OriginLength=0;
	int numberofblank=0;
	int i=0;
	while (*(str+i)!='\0')
	{
		++OriginLength;
		if (*(str+i)==' ')
		{
			++numberofblank;
		}
		++i;
	}
	int newlength=OriginLength+numberofblank*2;
	if (newlength>length)
	{
		return;
	}
	int indexOrigni=OriginLength;
	int indexofNew=newlength;
	while (indexOrigni>=0&&indexOrigni<indexofNew)
	{
		if (str[indexOrigni]!=' ')
		{
			str[newlength--]=str[indexOrigni];
		}
		else
		{
			str[newlength--]='0';
			str[newlength--]='2';
			str[newlength--]='%';
		}
		--indexOrigni;
	}
	i=0;
	while (*(str+i)!='\0')
	{
		cout<<*(str+i);
		++i;
	}
	return;
}
int main()
{
	const int length=30;
	char str[length] ="We are happy.";
	ReplaceBlank(str,length);
	return 0;
}

抱歉!评论已关闭.