• 每日一题 为了工作 2020 0413 第四十二题


    /**
     * 问题:字符串的调整与替换
     *      给定一个字符类型的数组chas[], chas 右半区全是空字符, 左半区不含有空字符。现
     * 在想将左半区中所有的空格字符替换成"%20", 假设chas右半区足够大,可以满足替换所需要
     * 的空间, 请完成替换函数。
     * 【举例】
     * 如果把chas的左半区看作字符串, 为"a b c", 假设chas的右半区足够大。替换后,
     * chas的左半区为'a%20b%20%20c"。
     * 【要求】
     * 替换函数的时间复杂度为O(N),额外空间复杂度为O(1)。
     * 【解答】
     * 遍历一遍可以得到两个信息,chas的左半区有多大,记为len, 左半区的空格数有多少,记为
     * num, 那么可知空格字符被"%20"替代后, 长度将是len+2*num。接下来从左半区的最后一个字
     * 符开始倒着遍历, 同时将字符复制到新长度最后的位置, 并依次向左倒着复制。遇到空格字
     * 符就依次把"O"、"2"和"%"进行复制。这样就可以得到替换后的chas数组。
     *
     * @author 雪瞳
     */
    

      

    public class Replace {
    
        public static char[] replace(char chas[]){
    
            if (chas == null || chas.length==0){
                return null;
            }
            //空格数量
            int num = 0;
            //chas左半区长度
            int len = 0;
    
            for (len = 0;len<chas.length && chas[len]!=0;len++){
                if(chas[len]==' '){
                    num++;
                }
            }
    
            int j = len+2*num-1;
            char result[] = new char[j+1];
            for(int i=len-1;i>-1;i--){
                if(chas[i]!=' '){
                    result[j--]=chas[i];
                }else {
                    result[j--]='0';
                    result[j--]='2';
                    result[j--]='%';
                }
            }
           return result;
        }
    
    }
    class Test{
        public static void main(String[] args) {
            char chas[]= new char[]{'a',' ','b',' ',' ','c'};
            char[] replace = Replace.replace(chas);
            for (char res:replace){
                System.err.print(res);
            }
        }
    }
    

      

  • 相关阅读:
    Lab BGP RTBH
    Lab BGP ORF
    Lab BGP Maximum-Prefix
    Lab BGP 路由翻动(route flaps)
    Lab BGP Peer-Group
    Lab BGP Dampening
    BGP Dampening Cyrus
    BGP进程工作步骤
    5、为什么域名解析用UDP协议?6、为什么区域传送用TCP协议?
    3、你知道DNS是什么?4、DNS的工作原理?
  • 原文地址:https://www.cnblogs.com/walxt/p/12690706.html
Copyright © 2020-2023  润新知