剑指 Offer 05. 替换空格

本问题对应的 leetcode 原文链接:剑指 Offer 05. 替换空格

问题描述

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

示例 1:

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

限制:

0 <= s 的长度 <= 10000

解题思路

视频讲解直达: 本题视频讲解

代码实现

    // Java中的常规做法
    // public String replaceSpace(String s) {
    //     // 常规
    //     StringBuilder builder = new StringBuilder();
    //     for(int i = 0; i < s.length(); i++){
    //         if(s.charAt(i) == ' '){
    //             builder.append("%20");
    //         } else {
    //             builder.append(s.charAt(i));
    //         }
    //     }
    //     return builder.toString();
    // }

    //这个做法是模拟原地扩容的,但是Java并不支持扩容,所以我们只是联系一下代码怎么写
    public String replaceSpace(String s) {
        // 统计有多少空格
        int count = 0;
        for(int i = 0; i < s.length(); i++){
            if(s.charAt(i) == ' '){
                count ++;
            }
        }

        char[] res = new char[s.length() + count * 2];
        int k = res.length - 1;
        // 从右往左遍历
        for(int i = s.length() - 1; i >= 0; i--){
            // 从右往左移动字符与替换字符
            if(s.charAt(i) == ' '){
                res[k--] = '0';
                res[k--] = '2';
                res[k--] = '%';
            } else {
                res[k--] = s.charAt(i);
            }
        }
        return new String(res);
    }

发表回复

后才能评论