java字符串替换空格符_字符串替换空格

本文介绍了如何在Java中高效地将字符串中的每个空格替换为'%20'。通过统计空格数量并预先计算新字符串长度,避免了不必要的字符移位,提供了三种不同的实现方式,包括直接替换、数据移位和StringBuilder操作,并通过测试用例验证了它们的正确性。
摘要由CSDN通过智能技术生成

题目描述

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

解题思路

老实说,看到这个题目想到的就是字符串替换,但是面试题肯定不是这么简单的,那么怎么在原字符串上进行高效的替换呢?我们的字符串替换,主要的消耗是在移位上,每遇到一个空格,后面的字符串就往后移位,那么之前的移位都没有作用了。我们知道字符串的长度,知道替换字符串的长度,如果还知道空格的多少,那么这个字符串的长度就知道了。知道长度之后,只需要把数据放到响应的位置就可以了。

步骤:

1. 遍历字符串,统计出空格数量

2. 再遍历一次,完成替换

代码实现

普通解法,直接替换字符串

public static string ReplaceSpaceForSimple(stringstr)

{return str.Replace(" ", "%20");

}

精妙解法数据移位

public static string ReplaceSpace(stringstr)

{int count = 0;foreach (var item instr)

{if (item == ' ')

{

count++;

}

}int oLength =str.Length;int length = oLength + count * 2; //

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值