Java 替換空格

題目描述

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

解一:

因爲最近在學習Head First Java,因此最早考慮到的就是使用字符串拼湊,思路很簡單,沒有考慮什麼時間複雜度,直接看代碼。數組

 1 public class Solution {
 2     public String replaceSpace(StringBuffer str) {
 3         String str1=str.toString();
 4         char[] charArray = str1.toCharArray();
 5         StringBuilder sBuilder = new StringBuilder();
 6         for (char c : charArray) {
 7             if(c==' ') {
 8             sBuilder.append("%20");    
 9             }else {
10                 sBuilder.append(c);
11             }
12         }
13         String string = sBuilder.toString();
14         return string;
15     }
16 }

解二:這個方法是借鑑網上別人的思路,本身理解了而後實現出來了。

思路:從字符串的後面開始複製和替換,首先準備兩個指針,p1和p2,p1指向原始字符串的末尾,p2指向替換後字符串的末尾,接下來,向前移動指針p1,逐個把它指向的字符複製到p2,碰到一個空格以後,把p1向前移動1格,在p2處插入字符串「20%」,因爲「20%」長度爲3,同時也要把p2向前移動3格。直到p1=p2,代表全部空格都已經替換完畢。app

 

 1 public class ReplaceSpace {
 2 
 3     public static void main(String[] args) {
 4         Scanner scanner = new Scanner(System.in);
 5         String str=scanner.nextLine();
 6         scanner.close();
 7         char[] charArray = str.toCharArray();
 8         int length=charArray.length;
 9         int spaceNumber=0;//獲取空格數量
10         for (char c : charArray) {
11             if(c==' ') {
12             spaceNumber++;
13             }
14         }
15         int newLength=length+spaceNumber*2;
16         char[] tempArray=new char[newLength];//新的數組的長度
17         System.arraycopy(charArray, 0, tempArray, 0, length);//將原來的數組拷貝到新長度的數組中
18         int indexofOriginal = length - 1;  
19         int indexofNew = newLength - 1;  
20         while (indexofOriginal>=0&&indexofOriginal!=indexofNew) {
21             if (tempArray[indexofOriginal]==' ') {
22                 tempArray[indexofNew--] = '0'; 
23                 tempArray[indexofNew--] = '2';
24                 tempArray[indexofNew--] = '%';
25             }else {
26                 tempArray[indexofNew--] = tempArray[indexofOriginal];
27             }
28             indexofOriginal--;
29             
30         }
31         for (char c : tempArray) {
32             System.out.print(c);
33         }
34     }
35 
36 }
相關文章
相關標籤/搜索