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,表明所有空格都已經替換完畢。

 

 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 }

 

 



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM