替换空格
Posted dyq19
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了替换空格相关的知识,希望对你有一定的参考价值。
1.StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
StringBuilder 的方法不是线程安全的(不能同步访问)。
但 StringBuilder 有速度优势,所以多数情况下建议使用 StringBuilder 类。
2.StringBuffer方法:.append(String s) 将指定的字符串追加到此字符序列
reverse() 将此字符序列用其反转形式取代
delete(int start, int end) 移除此序列的子字符串中的字符
insert(int offset, int i) 将 int
参数的字符串表示形式插入此序列中
replace(int start, int end, String str) 使用给定 String
中的字符替换此序列的子字符串中的字符。
public
class
Solution {
public
String replaceSpace(StringBuffer str) { //新建一个stringbuffer往进加
StringBuffer str1 =
new
StringBuffer();
for
(
int
i =
0
; i < str.length(); i++){
if
(str.charAt(i) ==
‘ ‘
)
str1.append(
"%20"
);
else
str1.append(str.charAt(i));}
return
str1.toString();
}
}
另一种方法:
-
一个空格变成了%20,也就是说每有一个空格,长度要增加2,所以首先先计算有多少个空格,这样长度就能增加多少,得到增加后的长度Length。
-
然后new一个Length长度的字符数组,从尾到头开始复制原来的数组,如果复制过程中,如果字符不是空格,直接复制,如果字符是空格,那么需要把这个空格变成%20(这个复制过程就是把新建的数组比如现在到了 K这个位置,然后就是K,K-1,K-2这三个位置依次变成0,2,%这三个字符,因为是从后往前复制的所以是倒序),重复这个过程就行。
如果相等,返回true; - (这里用字符数组进行复制,我尝试直接用string的charAt方法进行复制一直有错)
以上是关于替换空格的主要内容,如果未能解决你的问题,请参考以下文章