標籤:jdk 替換 ldl pre poi ade each log current
解決方式一:時間複雜度為O(n^2)
解決方式二:時間複雜度為O(n)
代碼實現:
package string;public class SpaceStringReplace2 { //len為數組大小的總容量 public static void SpaceReplace(String strOld,int len){ char[] chs =new char[len]; char[] ch = strOld.toCharArray(); for (int i = 0; i < ch.length; i++) { chs[i] = ch[i]; } int strOldLen = 0; int blackString = 0; if(chs==null || len<=0) { new NullPointerException(); } int i=0; while(chs[i]!=‘\0‘){ strOldLen++; if(chs[i]==‘ ‘){ blackString++; } i++; } //將空格轉換成%20字元的長度 int strNewLen = strOldLen + blackString*2; if(strNewLen>len){ new ArrayIndexOutOfBoundsException(); } int indexOfOld=strOldLen;//指向‘\0‘ int indexOfNew=strNewLen; while(indexOfOld>0 && indexOfNew>indexOfOld){ if(chs[indexOfOld] == ‘ ‘){ chs[indexOfNew--] = ‘0‘; chs[indexOfNew--] = ‘2‘; chs[indexOfNew--] = ‘%‘; } else{ chs[indexOfNew--] = chs[indexOfOld]; } --indexOfOld; } for (char c : chs) { if(c==‘\0‘){ break; } System.out.print(c); } System.out.println(); } public static void main(String[] args) { //StringBuilder str = new StringBuilder("We are happy."); long timelast = System.currentTimeMillis(); String str = "We are happy."; SpaceReplace(str,100);//We%20are%20happy. long timeafter = System.currentTimeMillis(); System.out.println(timeafter-timelast); }}
解決方式三:
JDK內建的字串分割
代碼實現:
package string;public class SpaceStringReplace { public static String SpaceReplace(String strOld){ String[] split = strOld.split(" "); StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < split.length-1; i++) { stringBuilder.append(split[i]).append("%20"); } stringBuilder.append(split[split.length-1]); String strNew = stringBuilder.toString(); return strNew; } public static void main(String[] args) { //StringBuilder str = new StringBuilder("We are happy."); String str = "We are happy."; System.out.println(SpaceReplace(str));//We%20are%20happy. }}
字串中的空格替換問題(Java版)