替換空格

題目描述

請實現一個函數,將一個字符串中的每一個空格替換成「%20」。例如,當字符串爲We Are Happy.則通過替換以後的字符串爲We%20Are%20Happy。app

方法一:ide

public String replaceSpace(StringBuffer str) {
                for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) == ' ') {
                str = str.replace(i,i,"%20");
            }
        }
        return str.toString();
}

這種方法是調用自身函數,用起來也很簡單。函數

方法二:code

StringBuffer sb = new StringBuffer();
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) == ' ') {
                sb.append("%20");
            } else {
                sb.append(str.charAt(i));
            }
        }
        return sb.toString();
    }

這種方法是建立一個新的StringBuffer對象,原理也是調用其自身函數,和方法一相似。對象

方法三:字符串

public String replaceSpace(StringBuffer str) {
        int len = str.length();//原字符串的長度
        int index = len - 1;
        int sum = 0;//統計須要擴容的長度
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) == ' ') {
                sum++;
            }
        }
        int newLen = str.length() + sum * 2;//新字符串的總長
        int newIndex = newLen - 1;
        str.setLength(newLen);//將原字符串的長度更改成新的長度
        while (newIndex > index){
            if (str.charAt(index) == ' ') {        
                str.setCharAt(newIndex--, '0');//若是是從前日後插入字符,那麼空格後面的每一個字符都要日後挪,因此咱們選擇從後往前插入
                str.setCharAt(newIndex--, '2');
                str.setCharAt(newIndex--, '%');
            } else {
                str.setCharAt(newIndex--,str.charAt(index));
            }
            index--;
        }
        return str.toString();
}

這種方法是在原字符串上進行擴容,將替換的字符再插入進去,這種方法相對前兩種來講更好一些。it

相關文章
相關標籤/搜索