面试题4:替换空格

本文介绍如何使用C++实现将字符串中的空格替换为%20的算法,包括两种方法:一种利用string类操作,另一种通过双指针从后向前扫描替换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:请实现一个函数,把字符串中的每个空格替换成“%20”。例如输入“We are happy.”,则输出“We%20are%20happy.”。
方法一:利用c++的string类实现,可参见c++中string类的详解
#include "stdafx.h"
#include <string>
#include <iostream>
using namespace std;

int main(int argc, _TCHAR* argv[])
{
	string str;
	getline(cin,str);//输入字符串可包含空格,注意与cin>>str;的区别
	while(str.find(" ")!=-1)//str.find()函数查找不到时返回-1,否则返回查找的位置
	{
		int pos=str.find(" ");
		str.erase(pos,1);//删除空格
		str.insert(pos,"%20");//插入字符串
	}
	cout<<str<<endl;
	return 0;
}
方法二:设置两个指针,从后往前进行扫描替换
#include "stdafx.h"
#include <iostream>
using namespace std;

void ReplaceBlank(char string[],int length)
{
	if(string==NULL&&length<=0)
		return;
	int originalLength=0;
	int numberOfBlank=0;
	int i=0;
	while(string[i]!='\0')
	{
		++originalLength;
		if(string[i]==' ')
			++numberOfBlank;
		++i;
	}
	int newLength=originalLength+numberOfBlank*2;
	if(newLength>length)
		return;
	int indexOfOriginal=originalLength;
	int indexOfNew=newLength;

	while(indexOfOriginal>=0&&indexOfNew>indexOfOriginal)
	{
		if(string[indexOfOriginal]==' ')
		{
			string[indexOfNew--]='0';
			string[indexOfNew--]='2';
			string[indexOfNew--]='%';
		}
		else
		{
			string[indexOfNew--]=string[indexOfOriginal];
		}
		--indexOfOriginal;
	}
}


int main()
{
	const int length=100;
	char string[length]="fgsk";
	ReplaceBlank(string,length);
	cout<<string<<endl;
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值