首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

java实现替换空格,哪位高手能优化一下小弟我的代码

2013-10-02 
java实现替换空格,谁能优化一下我的代码?请实现一个函数,把字符串中的每个空格替换成%20。例如输入“We are

java实现替换空格,谁能优化一下我的代码?
请实现一个函数,把字符串中的每个空格替换成%20。例如输入“We are happy.”,则输出“We%20are%20happy.”。

实现我已经写出来了,谁有什么相应的优化方案么?要求用java


public class ReplaceSpace
{
public StringBuffer replace(StringBuffer str)
{
if (null == str)
{
System.out.println("字符串为空!");
return null;
}

for (int i=0; i<str.length(); i++)
{
char index = str.charAt(i); 
if (index == ' ')
{
str.replace(i, i+1, "%20");
}
}
return str;
}
}



public class ReplaceSpaceTest
{
public static void main(String[] args)
{
ReplaceSpace replacespace = new ReplaceSpace();
StringBuffer str = new StringBuffer("We are happy");
//str = null;

replacespace.replace(str);

System.out.println(str);
}
}



java 优化 stringbuffer
[解决办法]
public StringBuffer replace(StringBuffer str) {
if (null == str) {
System.out.println("字符串为空!");
return null;
}
int n = str.length();
int i = 0;
char index = 0;
while (i < n) {
index = str.charAt(i);
if (index == ' ') {
str.replace(i, i + 1, "%20");
i +=3;//第次把' '变成"%20"后会增加2个字符
} else {
i++;
}
}
return str;
}

[解决办法]
当出现多次时,原地将1个字符replace为多个字符的方式明显导致复制次数增加。
遍历复制到一个新串性能更好些,时间O(N)系数是1
[解决办法]
引用:
Quote: 引用:

当出现多次时,原地将1个字符replace为多个字符的方式明显导致复制次数增加。
遍历复制到一个新串性能更好些,时间O(N)系数是1


增加了字符导致遍历次数增多我确实没有考虑到,但是这并没有减少字符串数组的复制次数,每遇到一个空格还是要复制一个字符串数组,每调用一次replace就复制一次数组,我在想能不能优化一下,减少字符串的复制次数。
你可以把每一个字符用链表表示,每遇到一个' '就更改内容为"%20",这样只需要遍历n次,替换k次(n为字符元素个数,k为空格个数)

热点排行