• 字符串中的空格替换问题(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.
        }
    }
    
  • 相关阅读:
    leetcode 33. Search in Rotated Sorted Array
    leetcode 32. Longest Valid Parentheses
    leetcode 28. Implement strStr()
    leetcode 27. Remove Element
    leetcode 26. Remove Duplicates from Sorted Array
    leetcode 24. Swap Nodes in Pairs
    leetcode 22. Generate Parentheses
    树莓派的频率管理和热控制
    sql执行insert插入一条记录同时获取刚插入的id
    全程直播个人博客重构过程,采用springboot+dubbo+jpa技术栈。
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/7069533.html
Copyright © 2020-2023  润新知