美文网首页
每日一题(二)——替换空格

每日一题(二)——替换空格

作者: 寻玉儿 | 来源:发表于2018-04-17 18:16 被阅读5次

题目描述:请实现一个函数,将字符串的每个空格替换为"%20"。例如输入"We are happy",则输出"We%20are%20happy."。
思路:问题1:替换字符串,是在原来的字符串上做替换,还是新开辟一个字符串做替换!问题2:在当前字符串替换,怎么替换才更有效率(不考虑java里现有的replace方法)。 从前往后替换,后面的字符要不断往后移动,要多次移动,所以效率低下。 从后往前,先计算需要多少空间,然后从后往前移动,则每个字符只为移动一次,这样效率更高一点。

public class ReplaceBank {
        
    public String replace(StringBuffer input) {
        if(input == null || input.length() == 0){
            return null;
        }
        
        int numberOfBlank = 0;
        for(int i=0; i<input.length(); i++){
            if(input.charAt(i) == ' ') {
                numberOfBlank++;
            }
        }
        
        int newLength = input.length() + 2 * numberOfBlank;     
        int indexOfOriginal = input.length() - 1;
        int indexOfNew = newLength - 1;     
        input.setLength(newLength);
        
        while(indexOfOriginal >=0 && indexOfNew > indexOfOriginal) {
            if(input.charAt(indexOfOriginal) == ' '){
                input.setCharAt(indexOfNew--, '0');
                input.setCharAt(indexOfNew--, '2');
                input.setCharAt(indexOfNew--, '%');
            }
            else {
                input.setCharAt(indexOfNew--, input.charAt(indexOfOriginal));
            }
            indexOfOriginal--;
        }
        
        return input.toString();
    }

    public static void main(String[] args) {
        ReplaceBank test = new ReplaceBank();
        // 输入的字符串包含空格:最后面,最前面,中间,连续空格
        StringBuffer str1 = new StringBuffer("We are happy.");
        StringBuffer str2 = new StringBuffer(" Wearehappy.");
        StringBuffer str3 = new StringBuffer("Wearehappy. ");
        StringBuffer str4 = new StringBuffer("We   are   happy  .");
        //输入的字符串没有空格
        StringBuffer str5 = new StringBuffer("Wearehappy.");
        //特殊输入测试:字符串只有连续空格、只有一个空格、字符串是一个null指针、字符串是一个空字符串;
        StringBuffer str6 = new StringBuffer("    ");
        StringBuffer str7 = new StringBuffer(" ");
        StringBuffer str8 = null;
        StringBuffer str9 = new StringBuffer("");
        System.out.println(test.replace(str1));
        System.out.println(test.replace(str2));
        System.out.println(test.replace(str3));
        System.out.println(test.replace(str4));
        System.out.println(test.replace(str5));
        System.out.println(test.replace(str6));
        System.out.println(test.replace(str7));
        System.out.println(test.replace(str8));
        System.out.println(test.replace(str9));

    }

}

相关文章

  • 每日一题(二)——替换空格

    题目描述:请实现一个函数,将字符串的每个空格替换为"%20"。例如输入"We are happy",则输出"We%...

  • LeetCode 每日一题 [40] 替换空格

    LeetCode 替换空格 [简单] 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 来源:力扣(L...

  • 每日一练(2):替换空格

    title: 每日一练(2):替换空格 categories:[剑指offer] tags:[每日一练] date...

  • NowCode 每日一题 剑指offer [2] 替换空格

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

  • 替换空格

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

  • 空格替换

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

  • 替换空格

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

  • 空格替换

    空格替换设计一种方法,将一个字符串中的所有空格替换成 %20 。你可以假设该字符串有足够的空间来加入新的字符,且你...

  • 替换空格

    《剑指offer》面试题5:替换空格 题目:请实现一个函数,把字符串中的每个空格替换成“%20”。例如,输入“we...

  • 替换空格

    ?环境:牛客的编译环境?语言:JavaScript☕️难点:string的replace方法在不使用正则匹配的情况...

网友评论

      本文标题:每日一题(二)——替换空格

      本文链接:https://www.haomeiwen.com/subject/zrupkftx.html