剑指 Offer 05. 替换空格

这段代码展示了两种在Java中将字符串中的空格替换为%20的方法。第一种通过字符数组操作,第二种利用StringBuilder类,后者更高效且不修改原字符串。这两种方法都避免了直接在数组上进行修改,提高了程序性能。
摘要由CSDN通过智能技术生成
class Solution {
    public String replaceSpace(String s) {
        // 将字符串转换为字符数组
        char[] str = s.toCharArray();
        // 统计字符串中包含的空格数
        int count = 0;
        for (char c : str) {
            if (c == ' ') {
                count++;
            }
        }
        // 创建一个新的字符数组,长度为原字符数组的长度加上空格数乘以 2
        //注意并不是 3
        char[] res = new char[str.length + count * 2];
        // 对原字符数组进行遍历和修改
        count = 0;
        for (char c :str) {
            if (c == ' ') {
                // 如果当前字符是空格,将 "%20" 替换为空格
                res[count++] = '%';
                res[count++] = '2';
                res[count++] = '0';
            } else {
                // 如果当前字符不是空格,直接将其复制到新的字符数组中
                res[count++] = c;
            }
        }
        // 将新字符数组转化为字符串并返回
        return new String(res);
    }
}

这里使用了 StringBuilder 类来构建新的字符串,避免了对原数组进行修改,也提高了效率。同时,使用了 sb.append() 方法来向 StringBuilder 中添加字符,避免了重复的计数操作。

class Solution {
    public String replaceSpace(String s) {
        if (s == null) {
            return null;
        }
        // 创建一个 StringBuilder 对象
        StringBuilder sb = new StringBuilder();
        // 遍历字符串 s 中的每一个字符
        for (char c : s.toCharArray()) {
            // 如果该字符是空格,将 "%20" 添加到 StringBuilder 对象中
            if (c == ' ') {
                sb.append("%20");
            } else {
                // 如果该字符不是空格,将该字符添加到 StringBuilder 对象中
                sb.append(c);
            }
        }
        // 将 StringBuilder 对象转换为字符串并返回
        return sb.toString();
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值