請實現一個函數,將一個字符串中的每一個空格替換成「%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