首页 > 算法 > 替换空格

替换空格

作者:bin

题目:实现一个函数,把字符串中的每个空格替换城”%20″,例如输入”nihao java”,则输出”nihao%20java”。

在web编程里面很常见,url一些特殊字符需要做替换。

粗暴的方法就是遍历原字符数组,然后添加到新数组,并且动态到增加新数组长度。
但是这样会导致新数组扩容时不断在复制,效率很低

所以我们可以先搞清楚字符串中有多少个空格,新数组长度 = 老数组长度 + 空格数量 * 2
代码如下:

    @Test
    public void ttt(){
        String a = "nihao java";
        System.out.println(remove_space(a));
    }

    public String remove_space(String oldStr){
        char[] oldArr = oldStr.toCharArray();

        int spaceCount = 0;
        char space = ' ';

        for (int i = 0; i < oldArr.length; i++) {
            if (space == oldArr[i]) {
                spaceCount++;
            }
        }

        char[] newArr = new char[oldArr.length + spaceCount * 2];
        int index = 0;
        for (int i = 0; i < oldArr.length; i++) {
            if (space == oldArr[i]) {
               newArr[index] = '%';
               newArr[index + 1] = '2';
               newArr[index + 2] = '0';
               index += 3;
            }else {
                newArr[index] = oldArr[i];
                index ++;
            }
        }

        return String.valueOf(newArr);
    }

您必须 [ 登录 ] 才能发表留言!