時間複雜度O(N)解法:java
使用兩個指針的方法:api
public class Solution { public String replaceSpace(StringBuffer str) { char[] chas = str.toString().toCharArray(); int blankNum = 0; //空格的個數 for(int i = 0;i < chas.length;i++){ //遍歷數組獲得空格個數 if(chas[i] == ' '){ blankNum++; } } int newLen = chas.length + blankNum * 2; //新數組的長度 char[] newChas = new char[newLen]; for(int i = 0,j = 0;j < chas.length;i++,j++){ newChas[i] = chas[j]; } int p1 = chas.length - 1; //指向原來數組的尾部 int p2 = newChas.length - 1; //指向新數組的尾部 while(p1 >= 0 && p2 >= p1){ if(newChas[p1] == ' '){ newChas[p2--] = '0'; newChas[p2--] = '2'; newChas[p2--] = '%'; }else{ newChas[p2--] = newChas[p1]; } p1--; } return new String(newChas); } }
使用java api的方法:數組
public class Solution { public String replaceSpace(StringBuffer str) {char[] chas= str.toString().toCharArray(); StringBuffer sb = new StringBuffer(); //建立一個新的字符串 for(int i = 0;i < chas.length;i++){ //遍歷數組,當遇到空格的時候添加%20,不然添加當前字符 if(chas[i]==' '){ sb.append("%20"); }else{ sb.append(chas[i]); } } return sb.toString(); } }
java api一行解法:app
public class Solution { public String replaceSpace(StringBuffer str) { return str.toString().replaceAll(" ","%20"); } }