首页 > 代码库 > 剑指offer二:替换空格

剑指offer二:替换空格

题目描述:

请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

解题思路:

本题中需要注意,新的字符串的长度要比旧的字符串长度长,这意味着,从前往后替换的话,每更换一次,后面的字符就要向后移动。因此,在替换的过程中需要考虑到时间复杂度和空间复杂度的问题。

 

public class Solution {
    public String replaceSpace(StringBuffer str) {
        int spaceNum = 0;
        //1.先计算出字符串中的空格数
        for(int i = 0; i < str.length(); i ++){
            if(str.charAt(i) == ‘ ‘){
                spaceNum ++;
            }
        }
        
        //旧数组下标
        int indexold = str.length() -1;
        //新数组下标
        int indexnew = str.length() + 2*spaceNum -1;
        int index = indexnew;
        String str1 = "";
        //定义新的数组
        char[] strArr = new char[indexnew+1];
        for(int j = indexold; j >= 0; j --){
            if(str.charAt(j) != ‘ ‘){
                strArr[index] = str.charAt(j);
                index--;
            }else{
                strArr[index] = ‘0‘;
                strArr[index-1] = ‘2‘;
                strArr[index-2] = ‘%‘;
                index-=3;
            }
        }
       // strArr[0] = str.charAt(0);
        //将字符数组转变为String
        for(int k = 0; k < strArr.length; k++){
            str1+=strArr[k];
        }
        return str1;
    }
}

测试结果:

技术分享

 

剑指offer二:替换空格