Loading

Easy | 剑指 Offer 05. 替换空格

剑指 Offer 05. 替换空格

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

示例 1:

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

限制:

0 <= s 的长度 <= 10000

解题思路

先扫描数组, 统计空格的数量, 每个空格替换成%20之后, 字符长度增加2.于是可以依次得到字符的总长度。然后再次扫描数组, 不过是从右往左扫描并赋值。遇到控制时, 就连续赋值三个字符。

public String replaceSpace(String s) {
    if (s == null || s.length() == 0) {
        return "";
    } 
    int spaceCount = 0;
    for (int i = 0; i < s.length(); i++) {
        if (s.charAt(i) == ' ') {
            spaceCount++;
        }
    }
    char[] res = new char[s.length()+2*spaceCount];
    for(int i = s.length()-1, j = res.length - 1; i >= 0; i--) {
        if (s.charAt(i) != ' ') {
            res[j] = s.charAt(i);
            j--;
        } else {
            res[j--] = '0'; 
            res[j--] = '2';
            res[j--] = '%';
        }
    }
    return String.valueOf(res);
}
posted @ 2021-01-24 16:08  反身而诚、  阅读(47)  评论(0编辑  收藏  举报