栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

leetcode刷题二 char数组空格替换

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

leetcode刷题二 char数组空格替换

char数组空格替换

题目:
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

c++提供string字符串数据结构,我们可以比较方便的去替换

方法一:利用string的特性

 void replaceSpace(char *str, int length) {
	if (length <= 0) return;
	string s = string(str);
	string res;
	for (auto x : s)
	{
		if (x == ' ')
			res += "%20";
		else
			res += x;
	}
	strcpy(str, res.c_str());

}

方法二:从后往前遍历替换,重点是需要知道char数组的长度

void replaceReverse(char *str, int length)
{
	//hello world 
	//从后向前遍历,如果碰到空格就增加两个空间插入%20 
	if (length <= 0) return;
	int totallen = length;
	int spaceCount = 0;
	for (int i = 0; i < length; ++i)
	{
		if (str[i] == ' ') spaceCount++;
	}
	totallen += spaceCount * 2;//hello world; 11+1*2 = 13;
	for (int j = length - 1; j >= 0 && j!=totallen; j--)
	{
		if (str[j] != ' ') str[--totallen] = str[j];
		else 
		{
			str[--totallen] = '0';
			str[--totallen] = '2';
			str[--totallen] = '%';
		}
	}
		

}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/974910.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号