zoukankan      html  css  js  c++  java
  • 字符串中的空格替换问题(Java版)

    解决方式一:时间复杂度为O(n^2)

    解决方式二:时间复杂度为O(n)


    代码实现:

    package string;
    
    public class SpaceStringReplace2 {
        //len为数组大小的总容量
        public static void SpaceReplace(String strOld,int len){
            char[] chs =new char[len];
            char[] ch = strOld.toCharArray();
            for (int i = 0; i < ch.length; i++) {
                chs[i] = ch[i];
            }
    
            int strOldLen = 0;
            int blackString = 0;
            if(chs==null || len<=0)
            {
                new NullPointerException(); 
            }
    
            int i=0;
            while(chs[i]!=''){
                strOldLen++;
                if(chs[i]==' '){
                    blackString++;
                }
                i++;
            }
            //将空格转换成%20字符的长度
            int strNewLen = strOldLen + blackString*2;
            if(strNewLen>len){
                new ArrayIndexOutOfBoundsException();
            }
    
            int indexOfOld=strOldLen;//指向''
            int indexOfNew=strNewLen;
    
            while(indexOfOld>0 && indexOfNew>indexOfOld){
                if(chs[indexOfOld] == ' '){
                    chs[indexOfNew--] = '0';
                    chs[indexOfNew--] = '2';
                    chs[indexOfNew--] = '%';
                }
                else{
                    chs[indexOfNew--] = chs[indexOfOld];
                }
                --indexOfOld;
            }   
            for (char c : chs) {
                if(c==''){
                    break;
                }
                System.out.print(c);
            }
            System.out.println();
        }
    
        public static void main(String[] args) {
            //StringBuilder str = new StringBuilder("We are happy.");
            long timelast = System.currentTimeMillis();
            String str = "We are happy.";
            SpaceReplace(str,100);//We%20are%20happy.
    
            long timeafter = System.currentTimeMillis();
            System.out.println(timeafter-timelast);
        }
    }

    解决方式三JDK自带的字符串分割

    代码实现:

    package string;
    
    public class SpaceStringReplace {
        public static String SpaceReplace(String strOld){
            String[] split = strOld.split(" ");
            StringBuilder stringBuilder = new StringBuilder();
            for (int i = 0; i < split.length-1; i++) {
                stringBuilder.append(split[i]).append("%20");
            }
            stringBuilder.append(split[split.length-1]);
            String strNew = stringBuilder.toString();
            return strNew;
        }
    
        public static void main(String[] args) {
            //StringBuilder str = new StringBuilder("We are happy.");
            String str = "We are happy.";
            System.out.println(SpaceReplace(str));//We%20are%20happy.
        }
    }
    
  • 相关阅读:
    Java动态代理(三)——模拟AOP实现
    Java动态代理(二)CGLIB动态代理应用
    Java动态代理(一)动态类Proxy的使用
    CGLIB实现动态代理
    初识Java微信公众号开发
    spring+ibatis事务管理配置
    什么是事务的传播特性
    Spring事务配置的五种方式
    Java语言基础(五) Java原始数据类型的分类以及数据范围
    Java语言基础(四) String和StringBuffer的区别
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/7069533.html
Copyright © 2011-2022 走看看