zoukankan      html  css  js  c++  java
  • 每日一题 为了工作 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);
            }
        }
    }
    

      

  • 相关阅读:
    JDBC_批处理Batch_插入2万条数据的测试
    JDBC_ResultSet结果集用法_游标原理_关闭连接问题
    JDBC_PreparedStatement用法_占位符_参数处理
    python_字符串_常用处理
    R-biomaRt使用-代码备份
    R-描述性统计
    django开发傻瓜教程-3-celery异步处理
    Head First Java-图形化界面
    javascript隐藏和显示元素以及清空textarea
    Entrez Direct
  • 原文地址:https://www.cnblogs.com/walxt/p/12690706.html
Copyright © 2011-2022 走看看