您的位置:首页 > Web前端

替换空格

2017-04-20 15:10 120 查看

题目

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

思路

从前往后替换:从前向后遍历,当插入新字符时,当前位置后面的字符全部需要移动位置,时间复杂度为O(n2)

从后向前替换:从后向前遍历,查找空格个数,可计算出新的字符串所占内存空间,申请足够容量的内存空间,进行复制替换,时间复杂度为O(n)

解答

public static String replaceSpace(StringBuffer str){
//原始字符串长度
int length=str.length();
int count=0;
if(length<1)
return "";
//计算空格个数
for(int i=0;i<length;i++){
if(str.charAt(i)==' ')
count++;
}
//新的字符串长度
int newlength=length+2*count;
str.setLength(newlength);
while(count>0 && length>=1){
if(str.charAt(--length)==' '){
str.setCharAt(--newlength,'0');
str.setCharAt(--newlength,'2');
str.setCharAt(--newlength,'%');
count--;
}
else
str.setCharAt(--newlength,str.charAt(length));
}
return str.toString();
}


考察点

不创建新的字符串内存空间

时间复杂度
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息