将字符串中的空格替换为%20

分析:若从前往后遍历字符串插入%20移动的位数较多,每经过一次空格插入后,空格后面的字符都会往后移动

因此尝试从字符串后面往前面遍历,这样事先计算出需要的字符位数,再将%20插入,这样移动的位数较少


public class solution {

public static void main(String[] args) {

StringBuffer str1 = new StringBuffer("we are family");
// String str1 = "we are family";
System.out.println(replaceSpace(str1));


}

public static String replaceSpace(StringBuffer str){
int i = 0;
int oldnumber = 0;
int spacenumber = 0;
char[] string = str.toString().toCharArray();
// char[] string = str.toCharArray();

String newstring;

while(i<string.length){
if(string[i]==' '){
spacenumber++;
}
oldnumber++;
i++;
}
int newnumber = oldnumber+spacenumber*2;
char newstr[] = new char[newnumber];
int Poldnumber = oldnumber-1;
int Pnewnumber = newnumber-1;
while((Pnewnumber>=Poldnumber)&&(Pnewnumber>=0)){
if(string[Poldnumber]!=' '){
newstr[Pnewnumber--] = string[Poldnumber];
}
else {
newstr[Pnewnumber--] = '0';
newstr[Pnewnumber--] = '2';
newstr[Pnewnumber--] = '%';
}
Poldnumber--;
}
newstring = String.valueOf(newstr);
return newstring;
}


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值