剑指offer笔记--2基础知识--数据结构(字符串)

字符串是由若干个字符组成的序列。并且字符串一旦构造后不可改变。
题目

请实现一个函数,把字符串中的每个空格替换成%20,例如输入"we are happy."  ,则输出为"we%20are%20happy"。
(这样输入的原因主要是在网络编程中会将空格替换成这样的字符串,替换原则是将特殊符号转换成%+ascii)
package cn.riversky.demo4;

/**
 * @author riversky E-mail:riversky@126.com
 * @version 创建时间 : 2018/3/11.
 */
public class Client {
    /**
     * 这里采用数组的特点进行算法的书写,虽然String.replace()可以达到相同的效果,但是这里屏蔽了底层的实现
     * 因此这里采用自己的实现进行书写.由于java是的方法全部都是值传递,因此在encodeUrl中进行测试
     * @param data
     */
    public static void encodeUrl(char[]data){
        int kong=0;
        int pre=data.length;
        for(int i=0;i<data.length;i++){
            if(data[i]==' '){
                kong++;
            }
        }
        char[] dataNew=new char[pre+kong*2];
        for(int j=0;j<pre;j++){
            dataNew[j]=data[j];
        }
        int last=dataNew.length;
        last--;pre--;
        while (pre>=0&&last>pre){
            if(dataNew[pre]==' '){
                dataNew[last--]='0';
                dataNew[last--]='2';
                dataNew[last--]='%';
            }else {
                dataNew[last--]=dataNew[pre];
            }
            pre--;
        }
        System.out.println(dataNew);
        data=dataNew;
    }

    public static void main(String[] args) {
        String a="we are happy";
        char[]b=a.toCharArray();
        System.out.println(b);
        encodeUrl(b);
        System.out.println(b);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值