zoukankan      html  css  js  c++  java
  • 剑指offer-3(替换空格)

    题目:

    实现一个方法,把一个字符数组里面的空格全部替换为“20%”。

    思路:

    首先呢,要先获取字符数组中有多少个空格以及字符数组中字符的长度,计算出替换后的长度;然后,让一个虚拟指针indexOfNew指想新长度大小的那个下标位置,让另一个虚拟指针indexOfOriginal指向原字符长度大小的那个下表位置,判断indexOfOriginal下表位置的是不是为空格,如果是,indexOfNew下表位置以及前面两个位置依次放入0,2,%;indexOfOriginal前移。继续判断;如果不是空格,直接把indexOfOriginal处的字符放到indexOfNew下表位置。

    代码:

    public class Test04 {
        /*
         * length为字符数组的总容量
         */
        public static void replaceBlank(char[] string,int length){
            
            if(string ==null || length<1){
                return;
            }
            int originalLength = 0;//字符的实际长度
            int blankLength = 0;//空格的个数
            int i = 0;
            while(i < length && string[i] != 'u0000'){
                ++originalLength;
                if(string[i]==' '){
                    ++blankLength;
                }
                i++;
                
            }
            //新的长度为字符长度加上空格个数乘以2,本来是20%三个字符,因为还要去一个空格,相当于每遇到一个空格,长度就需要增加两个
            int newLength = originalLength + blankLength * 2;
            if(newLength > length)
                return;
            int indexOfOriginal = originalLength;
            int indexOfNew = newLength;
            while(indexOfOriginal >= 0 && indexOfNew > indexOfOriginal){
                if(string[indexOfOriginal] == ' '){
                    string[indexOfNew--] = '0';
                    string[indexOfNew--] = '2';
                    string[indexOfNew--] = '%';
                }else{
                    string[indexOfNew--] = string[indexOfOriginal];
                }
                --indexOfOriginal;
                
            }
            
            for (int j = 0;j<newLength;j++) {
                System.out.print(string[j]);
            }
            
        }
        
        public static void main(String[] args) {
            char[] str = new char[20];
            str[0] = 'h';
            str[1] = 'e';
            str[2] = 'l';
            str[3] = 'l';
            str[4] = 'o';
            str[5] = ' ';
            str[6] = 'w';
            str[7] = ' ';
            replaceBlank(str,str.length);
        }
    
    }
  • 相关阅读:
    go module配置
    beego conf配置文件
    go string类型的特性
    go语言简单介绍,增强了解
    beego项目和go项目 打包部署到linux
    第一个go程序
    linux下vim编辑器查找 关键字
    配置ngnix下的虚拟主机
    PHP中文无乱码截取
    #1040
  • 原文地址:https://www.cnblogs.com/javatalk/p/10129516.html
Copyright © 2011-2022 走看看