zoukankan      html  css  js  c++  java
  • 剑指Offer04-空格替换

    题目:

    /**
         * 请实现一个函数,把字符串中的每个空格替换成"%20"。
         * 例如输入"We are happy",则输出"We%20are%20happy"
         */

    解题思路:

    若不考虑时间复杂度的情况,从前向后遍历,在原始的数组上进行操作,每当遇到空格,就将替换的字符插入,后面的字符向后移动,这样若存在o(n)个空格的话,

    长度为o(n)的字符就会向后面进行o(n)次移动复制,时间复杂度为o(n^2);

    若考虑时间复杂度,就需要减少频繁复制的次数,解决的办法可以是在创建一个新的数组来保存替换后的字符串。

    代码如下:

    import java.util.Scanner;
    
    public class StringBlank {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            String s = sc.nextLine();
            
            System.out.println(replace(s));
        }
        
        private static String replace(String s) {
            char[] c = s.toCharArray();
            int count = 0;
            for(int i=0;i<c.length;i++) {
                if(c[i] == ' ') {
                    //计算出空格的个数,从而得出新数组的长度
                    count++;
                }
            }
            
            //创建一个新数组,来保存新的字符串
            char[] temp = new char[c.length+2*count];
            //下标i指向新数组的末尾
            int i = c.length+2*count-1;
            //下标j指向旧数组的末尾
            int j = c.length-1;
            
            while(i>=0) {
                if(c[j] == ' ') {
                    temp[i] = '0';
                    temp[i-1] = '2';
                    temp[i-2] = '%';
                    i=i-3;
                }else {
                    temp[i] = c[j];
                    i--;
                }
                j--;
            }
            return new String(temp);
        }
    }
  • 相关阅读:
    II、Python HelloWorld
    初次比较正式的IT职场面试后几点对自己web开发的思考
    网页调用迅雷下载文件
    php PAC 安装
    php 大文件上传的实现
    正则表达式
    怎么看待php 面向对象思想
    IT职场初体验一
    php 发送邮件
    web的seo
  • 原文地址:https://www.cnblogs.com/meteorst/p/9220665.html
Copyright © 2011-2022 走看看