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

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

注意从后向前替换,使得时间复杂度为O(n);

public class Main {

    public static void main(String[] args) {
        Main main01=new Main();
        String str=main01.replaceSpace(new StringBuffer("old string"));
        System.out.println(str);
    }

    public String replaceSpace(StringBuffer str) {
        if(str==null || str.length()<0){
            return null;
        }
        //求字符串的实际长度和空格的数目
        int oldStrNum=0,blanckNum=0;
        int i=0;

        while(i<str.length()){
            oldStrNum++;
            if(str.charAt(i)==' '){
                blanckNum++;
            }
            i++;
        }

        int newStrNum=oldStrNum+2*blanckNum;

        int oldStrIndex =oldStrNum-1,
                newStrIndex=newStrNum-1;

        char newCharArr[]=new char[newStrNum];

        while(oldStrIndex>=0){
            if(str.charAt(oldStrIndex)==' '){
                newCharArr[newStrIndex--]='0';
                newCharArr[newStrIndex--]='2';
                newCharArr[newStrIndex--]='%';
            }else{
                newCharArr[newStrIndex--]=str.charAt(oldStrIndex);
            }
            oldStrIndex--;
        }
        String newStr=String.valueOf(newCharArr);

        return newStr;
    }
}
原文地址:https://www.cnblogs.com/Allen-win/p/8017054.html