替換空格

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

 

解題思路app

在字符串尾部填充任意字符,使得字符串的長度等於替換以後的長度。函數

由於一個空格要替換成三個字符(%20),所以當遍歷到一個空格時,須要在尾部填充兩個任意字符。code

令 P1 指向字符串原來的末尾位置,P2 指向字符串如今的末尾位置。P1 和 P2 從後向前遍歷,當 P1 遍歷到一個空格時,就須要令 P2 指向的位置依次填充 02%(注意是逆序的),不然就填充上 P1 指向字符的值。  PS :這裏的P1,是沒移動時的 P1 。                                    (P2 也會跟着移動),索引

--------------------------------------------------------------------------------------------------------------------------------------------------------字符串

a++ 的含義是先賦值後相加,如 b=a++; 先將a的值賦給b,而後a再加上1;++a的含義是先相加後賦值,如 b=++a 先將a加上1,而後再把加上1的a賦給b.io

setCharAt()class

該方法是StringBuffer中的方法,主要做用是將字符串中指定的位置的字符替換成目標字符,setCharAt(int index,char ch)index就是取代的位置 索引從0開始,ch是你要替換爲的字符串。遍歷

public class Solution {
    public String replaceSpace(StringBuffer str) {
    	int P1 = str.length()-1;//P1 指向如今字符串中末尾
        for(int i = 0;i <= P1;i++)//邊界條件,P1 == 0 ,終止
            if(str.charAt(i)==' ')//chatAt()——提取指定字符串
                str.append("  ");
        
        int P2 = str.length()-1;
        while(P1>=0&&P2>P1){//邊界的考察
            char c = str.charAt(P1--);//該方法的返回指定索引處char值,這裏將 P1 值給了 c,再減一
            if(c==' '){
                str.setCharAt(P2--,'0');//先把P2換上0,再P2-1
                str.setCharAt(P2--,'2');
                str.setCharAt(P2--,'%');
            }else{
                str.setCharAt(P2--,c);
            }
        }
        return str.toString();
    }
}
相關文章
相關標籤/搜索