题目:剑指Offer 05.替换空格

题目:剑指Offer 05.替换空格

请实现一个函数,把字符串 s 中的每个空格替换成"%20"。

示例 1: 输入:s = “We are happy.”
输出:“We%20are%20happy.”

思路1:借助字符串、数组方法
/**
 * @param {string} s
 * @return {string}
 */
var replaceSpace = function(s) {
    let res = s.split(" ");
    return res.join("%20");
};

String.split() 执行的操作与 Array.join 执行的操作是相反的。
split() 方法用于把一个字符串分割成字符串数组。

s.replace(" ","%20");
思路2:双指针法

不借助额外的辅助空间进行替换

  • 首先扩充数组到每个空格替换成"%20"之后的大小。
  • 然后从后向前替换空格,也就是双指针法,过程如下:
  • right指向新长度的末尾,left指向旧长度的末尾。
  • 如果left只想的值不为空,则s[right] = s[left],然后两个指针同时左移
  • 如果left只想的值为空,则依次添加% 2 0

在这里插入图片描述

var replaceSpace = function(s) {
	let resArr = Array.from(s);
	let count = 0;
	for(let i = 0;i<resArr.length;i++){
		if(resArr[i] === " ") count++;
	}
	let left = resArr.length-1,right = resArr.length + 2*count - 1;
	while(left>=0){
		if(resArr[left] === " "){
			resArr[right--] = "0";
			resArr[right--] = "2";
			resArr[right--] = "%";
			left--;
		}else{
			resArr[right--] = resArr[left--]
		}
	}
	return resArr.join("");
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值