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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/river472242652/article/details/79520216

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

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

/**
 * @author riversky E-mail:[email protected]
 * @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);
    }
}

猜你喜欢

转载自blog.csdn.net/river472242652/article/details/79520216