剑指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");
    }
}
相关文章
相关标签/搜索