字符串替换空格

Posted 清浅岁月

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串替换空格相关的知识,希望对你有一定的参考价值。

题目:实现一个函数,把字符串中的每一个空格替换为“%20”。

public class ReplaceBlack 
    public static void main(String[] args) 

        char[] result = replaceBlack("how are you!");
        if (result != null) 
            printchar(result);
        

    

    // 替换空格
    public static char[] replaceBlack(String originstr) 
        char[] testchar;
        if (originstr.length() > 00 && originstr != null) 
            int oldlength = originstr.length();
            int newlength = getBlackCount(originstr) * 2 + oldlength;//一个字符串变成了3个多了2个
            testchar = new char[newlength];
            int indexOfold = oldlength - 1;
            int indexOfnew = newlength - 1;
            System.arraycopy(originstr.toCharArray(), 0, testchar, 0,
                    originstr.toCharArray().length);
            System.err.println("未替换空格时的字符串");
            printchar(testchar);
            System.err.println("替换空格后的字符串");
            while (indexOfold >= 0 && indexOfold != indexOfnew) 
                if (testchar[indexOfold] == ' ') 
                    testchar[indexOfnew--] = '0';
                    testchar[indexOfnew--] = '2';
                    testchar[indexOfnew--] = '%';
                 else 
                    testchar[indexOfnew--] = testchar[indexOfold];
                
                indexOfold--;
            
         else 
            return null;
        
        return testchar;

    

    public static int getBlackCount(String str) 

        int count = 0;
        for (int i = 0; i < str.length(); i++) 
            String teststr = String.valueOf(str.charAt(i));
            if (teststr.equals(" ")) 
                count++;
            
        
        return count;
    

    public static void printchar(char[] testchar) 

        for (int i = 0; i < testchar.length; i++) 

            System.err.print(testchar[i]);
        
        System.err.println();

    

当初我是从前往后弄得,时间复杂度为O(n的平方),看了后面的时间复杂度为O(n)的解法,算法的优化无非就是时间复杂度和空间复杂度两个方向考虑,或者取舍平衡。从前往后,遇到空格,用”%”将空格替换,之后移动后面的字符,将”2”放入,再移动后面所有的字符串,将”0”放入,再移动后面所有的字符串。从后往钱就不会出现这种现象,一次成型。注意做之前要考虑清楚这个数据后边是否有足够的空间,是在原数组处理还是额外的数上处理。

以上是关于字符串替换空格的主要内容,如果未能解决你的问题,请参考以下文章

剑指offer05-替换空格

剑指offer05-替换空格

剑指 Offer(第 2 版)刷题 | 05. 替换空格

替换空格

剑指 Offer——2. 替换空格

字符串中的空格替换