zoukankan      html  css  js  c++  java
  • 剑指Offer-替换空格

    题目描述

    请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We AreHappy.则经过替换之后的字符串为We%20Are%20Happy。

    思路

    思路一:

    遍历字符串,当发现空格时,替换空格,改变原数据

    思路二:

    直接把StringBuffer转换成String调用replaceAll方法,改变原数据

    思路三:

    新建字符串,遍历原字符串,当发现空格时,在新字符串添加%20,否则添加原字符串中的数据,不改变原数据

    代码实现

    package String;
    
    /**
     * 替换空格
     * 请实现一个函数,将一个字符串中的空格替换成“%20”。
     * 例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
     */
    public class Solution12 {
        public static void main(String[] args) {
            Solution12 solution12 = new Solution12();
            StringBuffer str = new StringBuffer("We Are Happy");
            System.out.println(solution12.replaceSpace_3(str));
    
    
        }
    
        /**
         * 新建字符串,遍历原字符串,当发现空格时,在新字符串添加%20,否则添加原字符串中的数据,不改变原数据
         *
         * @param str
         * @return
         */
        public String replaceSpace_3(StringBuffer str) {
            if (str == null) {
                return null;
            }
            StringBuffer newStr = new StringBuffer();
            for (int i = 0; i < str.length(); i++) {
                if (str.charAt(i) == (' ')) {
                    newStr.append('%');
                    newStr.append('2');
                    newStr.append('0');
                } else {
                    newStr.append(str.charAt(i));
                }
    
            }
            return newStr.toString();
    
        }
    
        /**
         * 直接把StringBuffer转换成String调用replaceAll方法,改变原数据
         *
         * @param str
         * @return
         */
        public String replaceSpace_2(StringBuffer str) {
            if (str == null) {
                return null;
            }
            return str.toString().replaceAll(" ", "%20");
    
        }
    
        /**
         * 遍历字符串,当发现空格时,替换空格,改变原数据
         *
         * @param str
         * @return
         */
        public String replaceSpace(StringBuffer str) {
            if (str == null) {
                return null;
            }
            int i = 0, j;
            while (i < str.length()) {
                if ((j = str.indexOf(" ")) != -1) {
                    str.replace(j, j + 1, "%20");
                    i += 2;
                }
                i++;
            }
            return str.toString();
        }
    }
    
    
  • 相关阅读:
    java.lang.NoClassDefFoundError异常处理
    CMS之promotion failed&concurrent mode failure
    jvm 内存,线程,gc分析
    spring 参数校验
    常用的正则表达式
    《深入理解java虚拟机-高效并发》读书笔记
    ConcurrentHashMap源码分析
    web前端性能调优(二)
    由自动装箱和拆箱引发我看Integer源码
    阅读《effective java-第17条》遇到的问题解决与分享
  • 原文地址:https://www.cnblogs.com/wupeixuan/p/8623040.html
Copyright © 2011-2022 走看看