剑指 Offer 05. 替换空格

Posted Spring-_-Bear

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指 Offer 05. 替换空格相关的知识,希望对你有一定的参考价值。

请实现一个函数,把字符串 s 中的每个空格替换成"%20"。

示例 1:

输入:s = “We are happy.”
输出:“We%20are%20happy.”

限制:

0 <= s 的长度 <= 10000

题解1:

    /**
     * 剑指 Offer 05. 替换空格
     *
     * @param s 含有空格的字符串
     * @return 用 "%20" 替换所有空格后的新串
     */
    public String replaceSpace(String s) 
        /*
         * 思路分析:遍历 s 中的每一个字符,利用 StringBuilder 字符串可追加的特点,
         * 若 s 中的当前字符不是空格则直接追加到 StringBuilder 尾,如是则追加 %20
         */

        StringBuilder stringBuilder = new StringBuilder();
        int sLen = s.length();
        for (int i = 0; i < sLen; i++) 
            char ch = s.charAt(i);
            if (ch == ' ') 
                stringBuilder.append("%20");
                continue;
            
            stringBuilder.append(ch);
        
        return stringBuilder.toString();
    

题解2:

    /**
     * 剑指 Offer 05. 替换空格
     *
     * @param s 含有空格的字符串
     * @return 用 "%20" 替换所有空格后的新串
     */
    public String replaceSpace(String s) 
        /*
         * 思路分析:新建一个大小为 s 大小三倍(因为使用 %20 替换空格,最坏情况下所有 s 全是空格)的字符数组,
         * 遍历 s 的每一个字符,若是空格,则将字符数组的接连三个元素分别赋值为 %、2、0,否则赋值为 s 的当前字符
         * 最终返回由字符数组生成的字符串
         */
        int sLen = s.length();
        char[] chars = new char[sLen * 3];
        int index = 0;
        for (int i = 0; i < sLen; i++) 
            char ch = s.charAt(i);
            if (ch == ' ') 
                chars[index++] = '%';
                chars[index++] = '2';
                chars[index++] = '0';
                continue;
            
            chars[index++] = ch;
        
        return new String(chars, 0, index);
    

以上是关于剑指 Offer 05. 替换空格的主要内容,如果未能解决你的问题,请参考以下文章

剑指OFFER----面试题05.替换空格

LeetCode(剑指 Offer)- 05. 替换空格

Leetcode剑指 Offer 05. 替换空格

剑指 Offer 05. 替换空格

剑指 Offer 05. 替换空格

剑指 Offer(第 2 版)刷题 | 05. 替换空格