替换空格

题目描述

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

方法一:ide

public String replaceSpace(StringBuffer str) {
                for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) == ' ') {
                str = str.replace(i,i,"%20");
            }
        }
        return str.toString();
}

这种方法是调用自身函数,用起来也很简单。函数

方法二:code

StringBuffer sb = new StringBuffer();
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) == ' ') {
                sb.append("%20");
            } else {
                sb.append(str.charAt(i));
            }
        }
        return sb.toString();
    }

这种方法是建立一个新的StringBuffer对象,原理也是调用其自身函数,和方法一相似。对象

方法三:字符串

public String replaceSpace(StringBuffer str) {
        int len = str.length();//原字符串的长度
        int index = len - 1;
        int sum = 0;//统计须要扩容的长度
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) == ' ') {
                sum++;
            }
        }
        int newLen = str.length() + sum * 2;//新字符串的总长
        int newIndex = newLen - 1;
        str.setLength(newLen);//将原字符串的长度更改成新的长度
        while (newIndex > index){
            if (str.charAt(index) == ' ') {        
                str.setCharAt(newIndex--, '0');//若是是从前日后插入字符,那么空格后面的每一个字符都要日后挪,因此咱们选择从后往前插入
                str.setCharAt(newIndex--, '2');
                str.setCharAt(newIndex--, '%');
            } else {
                str.setCharAt(newIndex--,str.charAt(index));
            }
            index--;
        }
        return str.toString();
}

这种方法是在原字符串上进行扩容,将替换的字符再插入进去,这种方法相对前两种来讲更好一些。it

相关文章
相关标签/搜索