替换空格为%20

1.题目
这里写图片描述
2.理解
可以从前往后依次遍历其内容,如果为’ ‘字符,做替换,但是每次后面的数据都要移动,使其时间复杂度变大,从前面不行,我们就可以从后面,改变移动的次数;
3.代码

package edu.liangman.offer;

/**
 * Created by lm on 2016/12/31.
 */
public class ReplaceSpace {
    //定义一个替换空格的方法
    public static String replaceSpace(String src){
        char[] chars = src.toCharArray();
        int counter = 0;
        for(int i=0;i<chars.length;i++){
            if(chars[i]==' ')
                ++counter;
        }
        int len = chars.length+2*counter;
        char[] newarr = new char[len];
        System.arraycopy(chars,0,newarr,0
        ,chars.length);
        int j = chars.length-1;
        int k = newarr.length-1;

        while(j>=0&&j!=k){
            if(newarr[j]==' '){
               newarr[k--] = '0';
               newarr[k--] = '2';
               newarr[k--] = '%';

            }else{
                newarr[k--]=newarr[j];

            }
             j--;
        }

        return new String(newarr);
    }
    public static void main(String[] args){
        String str = "   ";
        System.out.println(replaceSpace(str));
    }

}

4.运行结果
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值