劍指offer-替換空格

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

時間複雜度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");
    }
}
相關文章
相關標籤/搜索