替换空格

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方法进行复制一直有错)
原文地址:https://www.cnblogs.com/dyq19/p/10483952.html